Biar saya nyatakan dahulu bahawa saya telah melihat banyak soalan yang dicadangkan dan tidak menemui jawapan yang berkaitan. Inilah yang saya lakukan.
Saya disambungkan ke contoh Amazon EC2 saya. Saya boleh log masuk ke pengguna root MySQL menggunakan arahan berikut:
mysql -u root -p
Kemudian saya mencipta bil pengguna baharu dengan hos %
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
Berikan semua kebenaran kepada bil pengguna:
grant all privileges on *.* to 'bill'@'%' with grant option;
Kemudian saya log keluar sebagai pengguna root dan cuba log masuk menggunakan pengguna bil:
mysql -u bill -p
Selepas memasukkan kata laluan yang betul, ralat berikut muncul:
Ralat 1045 (28000): Akses ditolak untuk "bil"@"localhost" pengguna (menggunakan kata laluan: YA)
Cuba:
Anda mungkin mempunyai pengguna tanpa nama
''@'localhost'
或''@'127.0.0.1'
.Mengikut Manual:
Oleh itu, pengguna tanpa nama seperti itu akan "menyekat" mana-mana pengguna lain sebagai
'[any_username]'@'%'
在从localhost
apabila disambungkan.'bill'@'localhost'
匹配'bill'@'%'
,但会在之前匹配(例如)''@'localhost'
.Penyelesaian yang disyorkan ialah memadamkan pengguna tanpa nama ini (biasanya ini idea yang bagus).
Suntingan di bawah kebanyakannya tidak berkaitan dengan soalan utama. Ini hanyalah untuk menjawab beberapa soalan yang ditanya dalam ulasan lain dalam benang ini.
Edit 1
Sahkan dengan
'bill'@'%'
melalui soket.Edit 2
Persediaan yang sama, kecuali saya mengaktifkan semula rangkaian dan kini mencipta pengguna tanpa nama
''@'localhost'
.Edit 3
Situasi yang sama seperti dalam edit 2, kini menyediakan kata laluan untuk pengguna tanpa nama.
Kesimpulan 1, daripada suntingan 1: Pengesahan
'bill'@'%'
boleh dilakukan melalui soket.Kesimpulan 2, daripada suntingan 2: Sama ada menyambung melalui TCP atau melalui soket tidak mempunyai kesan ke atas proses pengesahan (selain tidak dapat menyambung melalui soket kepada mana-mana pengguna lain selain
'something'@'localhost'
).Kesimpulan 3, daripada suntingan 3: Walaupun saya menyatakan
-ubill
, saya telah diberikan akses sebagai pengguna tanpa nama. Ini adalah kerana "peraturan pesanan" yang dicadangkan di atas. Sila ambil perhatian bahawa pada kebanyakan pemasangan lalai, terdapat pengguna tanpa namatanpa kata laluan (yang harus dilindungi/dialih keluar).