Büyük olasılıkla anonim bir kullanıcınız var ''@'localhost'
veya ''@'127.0.0.1'
.
Gereğince kılavuzda :
Birden fazla eşleşme mümkün olduğunda, sunucu hangisinin kullanılacağını belirlemelidir. Bu sorunu şu şekilde çözer: (...)
- Bir istemci bağlanmaya çalıştığında, sunucu [tablo mysql.user] satırlarını sıralı olarak arar .
- Sunucu, istemci ana bilgisayar adıyla ve kullanıcı adıyla eşleşen ilk satırı kullanır.
(...) Sunucu, önce en belirgin Ana Makine değerlerine sahip satırları sıralayan sıralama kurallarını kullanır . Değişmez ana bilgisayar adları ['localhost' gibi] ve IP adresleri en belirgindir.
Bu nedenle, böyle bir anonim kullanıcı '[any_username]'@'%'
, bağlanırken olduğu gibi herhangi bir kullanıcıyı "maskeler" localhost
.
'bill'@'localhost'
eşleşir 'bill'@'%'
, ancak ''@'localhost'
önceden eşleşir (ör.) .
Önerilen çözüm bu anonim kullanıcıyı bırakmaktır (bu genellikle her durumda yapmak için iyi bir şeydir).
Aşağıdaki düzenlemeler çoğunlukla ana soru ile ilgisizdir. Bunlar yalnızca bu konudaki diğer yorumlarda sorulan bazı soruları cevaplamak içindir.
Düzenle 1
'bill'@'%'
Soket üzerinden kimlik doğrulaması .
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass --socket = / tmp / mysql-5.5.sock
MySQL monitörüne hoş geldiniz (...)
mysql> SELECT kullanıcı, ana bilgisayar FROM mysql.user;
+ ------ + ----------- +
| kullanıcı | sunucu |
+ ------ + ----------- +
| fatura | % |
| kök | 127.0.0.1 |
| kök | :: 1 |
| kök | localhost |
+ ------ + ----------- +
Sette 4 sıra (0.00 saniye)
mysql> KULLANICI SEÇ (), CURRENT_USER ();
+ ---------------- + ---------------- +
| KULLANICI () | CURRENT_USER () |
+ ---------------- + ---------------- +
| bill @ localhost | fatura @% |
+ ---------------- + ---------------- +
Sette 1 satır (0,02 sn)
mysql> 'skip_networking' GİBİ DEĞİŞKENLERİ GÖSTER;
+ ----------------- + ------- +
| Değişken_adı | Değer |
+ ----------------- + ------- +
| skip_networking | AÇIK |
+ ----------------- + ------- +
Sette 1 satır (0.00 sn)
Düzenle 2
Tam olarak aynı kurulumu yaptım, ancak ağı yeniden etkinleştirdim ve şimdi anonim bir kullanıcı oluşturuyorum ''@'localhost'
.
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql
MySQL monitörüne hoş geldiniz (...)
mysql> KULLANICI OLUŞTUR '' @ 'localhost' 'anotherpass' İLE TANIMLANMIŞ;
Sorgu tamam, 0 satır etkilendi (0.00 sn)
mysql> Hoşça kal
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
--socket = / tmp / MySQL-5.5.sock
HATA 1045 (28000): 'bill' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanarak: EVET)
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
-h127.0.0.1 --protokol = TCP
HATA 1045 (28000): 'bill' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanarak: EVET)
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
-hlocalhost --protocol = TCP
HATA 1045 (28000): 'bill' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanarak: EVET)
Düzenle 3
Düzenleme 2'deki durumla aynı, şimdi anonim kullanıcının şifresini sağlıyor.
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -panotherpass -hlocalhost
MySQL monitörüne hoş geldiniz (...)
mysql> KULLANICI SEÇ (), CURRENT_USER ();
+ ---------------- + ---------------- +
| KULLANICI () | CURRENT_USER () |
+ ---------------- + ---------------- +
| bill @ localhost | @localhost |
+ ---------------- + ---------------- +
Sette 1 satır (0.01 sn)
Sonuç 1, düzenleme 1'den: Bir tanesi 'bill'@'%'
bir soket aracılığıyla olduğu gibi doğrulanabilir .
Sonuç 2, düzenleme 2'den: Birinin TCP üzerinden mi yoksa bir yuvadan mı bağlanacağı, kimlik doğrulama işlemi üzerinde herhangi bir etkiye sahip değildir (biri başka biri olarak değil 'something'@'localhost'
, bir soket aracılığıyla bağlanamaz ).
Sonuç 3, düzenleme 3'ten: Belirtmeme rağmen -ubill
, bana anonim kullanıcı olarak erişim izni verildi. Bunun nedeni yukarıda tavsiye edilen "sıralama kuralları" dır. Çoğu varsayılan kurulumda, parola olmayan, anonim bir kullanıcının bulunduğuna (ve güvenli / güvenli bir şekilde kaldırılması gerektiğine) dikkat edin.
FLUSH PRIVILEGES
?