Theo tài liệu của MySQL , bạn có thể làm cứng máy chủ MySQL bằng cách thêm mật khẩu hoặc xóa tài khoản ẩn danh.
Nếu bạn muốn ngăn khách hàng kết nối với tư cách là người dùng ẩn danh mà không có mật khẩu, bạn nên gán mật khẩu cho từng tài khoản ẩn danh hoặc nếu không sẽ xóa tài khoản.
Trước khi làm cứng, bảng người dùng của tôi trông như thế này.
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 |
+------------------+-----------+-------------------------------------------+
Tôi đã xóa tất cả các tài khoản ẩn danh để bảng người dùng hiện như thế này. (Tôi đang sử dụng con rối để quản lý người dùng, nhưng con rối thực hiện một cách hiệu quả một DROP USER
lệnh).
mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user | host | password |
+------------------+-----------+-------------------------------------------+
| root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+
Tại sao tôi vẫn có thể đăng nhập vào hệ thống kiểm tra của mình mà không cần tên người dùng hoặc mật khẩu?
Tôi cần làm gì để ngăn chặn bất kỳ người dùng không mong muốn nào đăng nhập?
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>
Cập nhật : Tôi cũng vừa phát hiện ra rằng tôi có thể đăng nhập bằng root mà không cần nhập mật khẩu.
Update2 : Tôi thấy câu hỏi này có một số thông tin tốt, nhưng không giải quyết được vấn đề.
Không có người dùng ẩn danh.
mysql> select user,host,password from mysql.user where user='';
Empty set (0.00 sec)
Tôi đăng nhập như root@localhost
.
mysql> select USER(),CURRENT_USER();
+----------------+----------------+
| USER() | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
Tôi không có mật khẩu mặc định hoặc bảng bỏ qua được xác định trong 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
Cập nhật 3 :
Tôi đã thử thực hiện các bước này với con rối, (sẽ tự động thực hiện một đặc quyền tuôn ra). Tôi cũng đã tự xóa các đặc quyền và cũng đã thử khởi động lại mysql.
Update4 :
Tôi cũng đã thử thay đổi mật khẩu gốc mysql và các đặc quyền bị xóa . Không may mắn, tôi vẫn có thể đăng nhập như bất kỳ người dùng nào mà không cần mật khẩu.