MySQL Veritabanı Kullanıcısı: Hangi Ayrıcalıklara ihtiyaç var?


52

WordPress ( "5 Dakika" ) için kısa kurulum talimatı şunları belirtir:

Web sunucunuzda WordPress için bir veritabanı ve ona erişmek ve değiştirmek için tüm ayrıcalıklara sahip olan bir MySQL kullanıcısı oluşturun.

Profesyonel olarak yeni bir blog kurarken, MySQL veritabanı kullanıcı ayrıcalıkları / izinleri yapılandırmasının bana sunduğu şeylerle nasıl eşleştiğini merak ediyordum:

  • Veri: SELECT , INSERT, UPDATE,DELETE
  • Tanım: CREATE , ALTER,DROP
  • Ekstra: INDEX
  • Daha:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINE

İlk üç grup için oldukça eminim, onlara Veri, Tanım ve Ekstra adını verdim. Peki ya More girişinin altındaki diğerleri ? Normalde diyebilirim ki, bunlara gerek yok ama ikinci bir görüş almak istiyorum.

Yanıtlar:


13

Sizin de belirttiğiniz gibi diğerleri gerekli değildir.

Btw, yapabileceğiniz şey, istenen sayfaya bağlı olarak kullanıcıyı / şifreyi şartlı olarak ayarlamaktır. Normal kullanım için select / insert / update / delete ile ayrıcalıklı olduğu gibi ve yükseltme sayfasını ziyaret ederken ek olarak tanım / dizinle ilgili şeylerle ayrıcalıklı olduğu gibi.


1
Bir WordPress ortamında istenen sayfaya göre kullanıcı / geçişi koşullu olarak nasıl ayarlayacağınıza dair bir referans var mı ? TA
superjos,

@superjos: Kafamın tepesinden haberdar olduğumu bilmiyorum, ama bunun ana amacı wp-config'de normal DB kullanıcısı select / insert / update / delete komutunu ve url ilgili / ile eşleştiğinde tanımlamak olacaktır. wp-admin sayfaları (muhtemelen yükseltme, temayı etkinleştirme ve eklentiyi etkinleştirme), başka her şeyi yapabilecek alternatif bir kullanıcı tanımlamak için.
Denis de Bernardy

34

"Tüm ayrıcalıklar" genellikle her şeyi kullanıcıya vermeniz gerektiği anlamına gelir. Ancak ...

MySQL kullanıcısının sadece ihtiyaç duyduğunu iddia eden en az bir makale buldum :

  • SEÇ
  • INSERT
  • GÜNCELLEME

Daha derine inerek , tam olarak çalışabilmek için (otomatik güncellemeler, eklenti yükleme / kaldırma vb.) WordPress’in ek izinler alması gerektiğini gördüm:

  • SİL
  • ALTER (güncellemeler için)
  • TABLO OLUŞTURMA
  • DAMLA MASASI

Ayrıca, başvuruda bulunulmadı, ancak mantıklı:

  • INDEX

Ancak bunlar, başka bir yerde yayınlanan görüşlerle desteklenen, bulabildiğim sadece iki sağlam referans. Sizi GRANT ALL'a bağlı kalmaya teşvik ediyorum, ancak DB kullanımınızı kesinlikle sınırlamanız gerekiyorsa , bu 7 ayrıcalıkla başlayın ve işlerin beklendiği gibi çalıştığından emin olmak için tamamen test edin.


Düşüncelerinizi paylaştığınız için teşekkür ederiz. Bu site için HİÇBİR TÜM yapmadım, çünkü bu bir geliştirme sitesi değil. INDEX. Şimdiye kadar iyi görünüyor, sanırım önümüzdeki günlerde izini sürdüm, bu gerçek bir yaşam alanı. çok sayıda eklenti kullanımı ve benzeri. INDEX için çekirdeği ve mysql el kitabını da biraz arayabilirim.
hakre

1
Yalnızca üçüncü taraf eklentilerinin istedikleri herhangi bir SQL ifadesi hakkında çağrı yapabileceğini unutmayın ... bu nedenle, iptal ettiğiniz ayrıcalıklara bağlı olan şeyleri yüklemeden önce bunları doğru şekilde kontrol ettiğinizden emin olun.
EAMann

12

İşte Codex'in veritabanı kullanıcı haklarını kısıtlama konusunda söyledikleri:

Blog yayınları gönderme, medya dosyaları yükleme, yorum gönderme, yeni WordPress kullanıcıları oluşturma ve WordPress eklentileri yükleme gibi normal WordPress işlemleri için, MySQL veritabanı kullanıcısının yalnızca veri okumaya ihtiyacı vardır ve MySQL veritabanına veri yazma ayrıcalıkları gerekir; SELECT, INSERT, GÜNCELLEME ve SİL.

Bu nedenle, DROP, ALTER ve GRANT gibi diğer veritabanı yapıları ve yönetim ayrıcalıkları iptal edilebilir. Bu gibi ayrıcalıkları iptal ederek, çevreleme politikalarını da iyileştiriyorsunuz.

Not: Bazı eklentiler, temalar ve büyük WordPress güncellemeleri, yeni tablo ekleme veya şema değiştirme gibi veritabanı yapısal değişiklikler yapmayı gerektirebilir. Bu durumda, eklentiyi kurmadan veya bir yazılımı güncellemeden önce geçici olarak veritabanı kullanıcısına gerekli yetkileri verin.

http://codex.wordpress.org/Hardening_WordPress


2
Mümkün olduğunda En Az Ayrıcalık ilkesini uygulamaya çalışıyorum. (Yararlı) alıntılanan bilgiler artık bağlantılı Codex makalesinde bulunmadığından buraya kopyaladığınız için teşekkür ederiz.
Anthony G - Monica

2

Redburn'ün gönderimindeki "Not" ile ilgili olarak, Wordpress Codex'te ayrıca güncellemeleri ve veritabanı şeması değişikliklerini de okumanız gereken bir Uyarı var ...

(Düzenleme: Artık bir kullanıcı oluştururken veya güncellerken ayrıcalıklar listesinde "HESABI" GÖRMEDİĞİMİZİ fark ediyorum . Belki de "CREATE" listesine eklenmeli mi? Bu konuda bilgisi olan var mı? - Hostgator cPanel kullanarak , Mart 2016 -)

UYARI:
Bu ayrıcalıklara sahip olmadan güncelleme girişimleri [ SELECT, INSERT, UPDATE, DELETE, DROP, ALTER ve GRANT] veritabanı şeması değişiklikleri gerçekleştiğinde sorunlara neden olabilir. Bu nedenle, bu ayrıcalıkların iptal edilmesi önerilmez. Güvenlik nedeniyle bunu yapmanız gerektiğine inanıyorsanız, lütfen önce sağlam bir yedekleme planınızın olduğundan ve test ettiğiniz tüm veritabanı yedeklerinin geçerli olduğundan ve kolayca geri yüklenebildiğinden emin olun. Başarısız bir veritabanı yükseltme işlemi genellikle veritabanını eski bir sürüme geri yükleyerek, uygun izinleri vererek ve WordPress'in veritabanı güncellemesini yeniden denemesine izin vererek çözülebilir. Veritabanını geri yüklemek onu eski sürüme döndürür ve WordPress yönetim ekranları eski sürümü algılar ve gerekli SQL komutlarını çalıştırmanıza izin verir. Çoğu WordPress yükseltmesi şemayı değiştirmez, ancak bazıları değiştirir. Sadece ana nokta güncellemeleri (3.7 ila 3.8, örneğin) şema değiştirecek. Küçük iyileştirmeler (3.8 ila 3.8.1) genellikle yapılmayacaktır. Bununla birlikte düzenli bir yedekleme yapın.

Kodeks: http://codex.wordpress.org/Hardening_WordPress


0

Benim fikrim yukarıdaki @EAMann ile aynıdır, kaynak gösterdiği kaynakların aynısıdır: GRANT ALL sitenizin işlevsel ve gelecekteki bir kanıt olduğunu garanti etmek için gereklidir. Bir üretim sahasında bile, kullanım kılavuzuna bağlı kalmaya çalışın.

WordPress çekirdeğine ve birkaç eklentiye kod ekleyen biri olarak, kullanım kılavuzunda önerilen varsayılan DB ayrıcalıklarını korumanızı tavsiye ederim (wpdatabasename ON GRANT ALL PRIVILEGES. * TO "wordpressusername" @ "hostname").

WordPress kaynak kodu (şimdiki ve gelecekteki) WordPress DB kullanıcısının, verilen WordPress veritabanı için tüm DB ayrıcalıklarına sahip olduğunu varsayar. Kurulumunuz herhangi bir DB yetkisini kaçırırsa, WordPress'i yükseltirken ve daha fazla eklenti eklerken sorun yaşayabilirsiniz.

Bu nedenle, gerçekten ne yaptığınızı bilmiyorsanız, çok özel gereksinimleriniz olduğunu ve özel DB ayrıcalıklarına sahip olduğunuzu unutmazsanız, kılavuz tarafından önerilen varsayılan DB ayrıcalıklarından farklı DB ayrıcalıkları kullanmamalısınız.

Codex sayfası o zamandan beri çeşitli sistemler ve ekran görüntüleri ile bunun nasıl yapılacağı konusunda güncellendi. https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User

Veri Adı adı ve kullanıcısı oluşturma (PHPMyAdmin aracılığıyla): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin

Veri Adı adı ve kullanıcısı oluşturma (MySQL komut satırı istemcisi aracılığıyla): https://codex.wordpress.org/Installing_WordPress#Using_the_MySQL_Client

mysql> CREATE DATABASE wpdatabasename;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.