Sau khi thiết lập mật khẩu root, tại sao MYSQL vẫn cho phép tôi đăng nhập mà không cần mật khẩu?


10

Sau khi thiết lập mật khẩu gốc, tại sao MYSQL vẫn cho phép tôi đăng nhập mà không cần mật khẩu từ dòng lệnh? Tôi có thể gõ "mysql" tại dấu nhắc unix gốc và nó yêu cầu không có mật khẩu và vẫn cho phép tôi truy cập root. Tôi không hiểu tại sao "mysql -u root" không NGAY BÂY GIỜ hỏi tôi mật khẩu mà tôi đã đặt trên tài khoản.

Ngoài ra, tôi không thể đăng nhập vào mysql từ một máy từ xa dưới dạng 'root'. Tôi không cấu hình nó chính xác dưới đây? Tôi gặp lỗi: "Máy chủ ... không được phép kết nối với máy chủ MySQL này. Tôi không định cấu hình nó cho '%'?

Đây là bảng người dùng của tôi:

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)

Câu trả lời:


4

Có vẻ như mật khẩu được đặt trên 'root'@'localhost'mục nhập của người dùng, nhưng không phải trên 'root'@'%'mục nhập; xác thực không có mật khẩu sẽ được cho phép dựa trên điều đó.

Đối với mục đích bảo mật, xem xét lại cho phép truy cập root từ bất cứ đâu. Nếu bạn cần nó, sau đó loại bỏ các thông số kỹ thuật localhost:

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

Và đặt mật khẩu cho 'root'@'%'người dùng:

set password for 'root'@'%' = password('passwordhere');

Đó là MỌI THỨ tôi cần và sau đó là một số. Cảm ơn. Tôi không chắc chắn những gì an toàn để loại bỏ hoặc không an toàn và bạn đã trả lời câu hỏi của tôi. Câu trả lời chính xác. :-)
djangofan

4

Chà, câu trả lời nằm ngay trong bảng đó - bạn cần xóa các dòng "root" không có mật khẩu được liệt kê.

Ngoài ra, có vẻ như bạn cho phép kết nối từ bất cứ đâu (?!?!) Khi không sử dụng hoặc không sử dụng. Có lẽ là một ý tưởng tồi. Tôi sẽ làm một cái gì đó như:

mysql> use mysql;
mysql> delete from user where password = "";

2

Đừng quên FLIV PRIVILEGES hoặc bạn vẫn có thể đăng nhập mà không cần mật khẩu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.