Setelah mengatur kata sandi root, mengapa MYSQL masih mengizinkan saya untuk masuk tanpa kata sandi?

10

Setelah mengatur kata sandi root, mengapa MYSQL masih mengizinkan saya untuk masuk tanpa kata sandi dari baris perintah? Saya dapat mengetik "mysql" di prompt root unix dan tidak meminta kata sandi dan masih memungkinkan saya mengakses root. Saya tidak mengerti mengapa "mysql -u root" tidak SEKARANG meminta saya untuk kata sandi yang saya tetapkan di akun.

Juga, saya tidak bisa masuk ke mysql dari mesin remote sebagai 'root'. Bukankah saya mengkonfigurasinya dengan benar di bawah ini? Saya mendapatkan kesalahan: "Host ... tidak diizinkan untuk terhubung ke server MySQL ini. Apakah saya tidak mengkonfigurasi untuk '%'?

Ini tabel pengguna saya:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)
Djangofan
sumber

Jawaban:

4

Sepertinya kata sandi diatur pada 'root'@'localhost'entri pengguna, tetapi tidak pada 'root'@'%'entri; otentikasi bebas kata sandi akan diizinkan berdasarkan itu.

Untuk tujuan keamanan, pertimbangkan kembali mengizinkan akses root dari mana saja. Jika Anda benar-benar membutuhkannya, cukup singkirkan spesifikasi localhost:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

Dan atur kata sandi untuk 'root'@'%'pengguna:

set password for 'root'@'%' = password('passwordhere');
Shane Madden
sumber
Itu SEMUA yang saya butuhkan dan kemudian beberapa. Terima kasih. Saya tidak yakin apa yang aman untuk dihapus atau tidak aman dan Anda menjawab pertanyaan saya. Jawaban yang bagus :-)
djangofan
4

Jawabannya ada di tabel itu - Anda harus menghapus baris "root" yang tidak memiliki kata sandi.

Juga, sepertinya Anda mengizinkan koneksi dari mana saja (?!?!) Saat tidak menggunakan pengguna atau akses. Mungkin ide yang buruk. Saya akan melakukan sesuatu seperti:

mysql> use mysql;
mysql> delete from user where password = "";
EEAA
sumber
2

Jangan lupa untuk FLUSH PRIVILEGES atau Anda masih bisa masuk tanpa kata sandi.

tgunr
sumber