Menurut dokumentasi MySQL , Anda dapat mengeraskan server MySQL dengan menambahkan kata sandi, atau menghapus akun anonim.
Jika Anda ingin mencegah klien terhubung sebagai pengguna anonim tanpa kata sandi, Anda harus menetapkan kata sandi untuk setiap akun anonim atau menghapus akun.
Sebelum pengerasan, tabel pengguna saya terlihat seperti ini.
mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user | host | password |
+------------------+-----------+-------------------------------------------+
| root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| root | gitlab | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | gitlab | |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+
Saya telah menghapus semua akun anonim, sehingga tabel pengguna sekarang terlihat seperti ini. (Saya menggunakan boneka untuk mengelola pengguna, tetapi boneka secara efektif melakukan DROP USER
perintah).
mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user | host | password |
+------------------+-----------+-------------------------------------------+
| root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+
Mengapa saya masih bisa masuk ke sistem pengujian saya tanpa nama pengguna atau kata sandi?
Apa yang harus saya lakukan untuk mencegah pengguna yang tidak diinginkan masuk?
root@gitlab:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 98
Server version: 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
....
mysql>
Pembaruan : Saya juga baru tahu bahwa saya bisa masuk sebagai root, tanpa memasukkan kata sandi.
Update2 : Saya menemukan pertanyaan ini yang memiliki beberapa informasi yang baik, tetapi tidak menyelesaikan masalah.
Tidak ada pengguna anonim.
mysql> select user,host,password from mysql.user where user='';
Empty set (0.00 sec)
Saya login sebagai root@localhost
.
mysql> select USER(),CURRENT_USER();
+----------------+----------------+
| USER() | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
Saya tidak memiliki kata sandi default, atau melewatkan-hibah-tabel yang didefinisikan di my.cnf
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'skip-grant-tables'|wc -l
0
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'pass'|wc -l
0
Pembaruan3 :
Saya telah mencoba melakukan langkah-langkah ini dengan boneka, (yang harus melakukan hak istimewa flush secara otomatis). Saya juga memiliki hak secara manual flushed dan juga mencoba me-restart mysql.
Update4 :
Saya juga telah mencoba mengubah kata sandi root mysql dan hak memerah. Tidak berhasil, saya masih bisa masuk sebagai pengguna mana saja tanpa kata sandi.
Jawaban:
Saya menemukan jawabannya. Sementara /etc/mysql/my.cnf tidak memiliki keypair kata sandi disimpan, ada kata sandi yang disimpan di /root/.my.cnf.
Segera setelah saya berkomentar kata sandi di /root/.my.cnf, saya tidak diizinkan masuk tanpa kata sandi (yang saya harapkan).
sumber