Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL hiển thị DROP USER nhưng user vẫn tồn tại trong bảng mysql.user?

Tại sao DROP USER không xóa được user khỏi mysql.user?

Khi thực hiện DROP USER nhưng user vẫn xuất hiện trong bảng mysql.user, nguyên nhân thường là do user được tạo với host khác so với host bạn đang xóa.

Kiểm tra user và host hiện tại

mysql> SELECT user, host FROM mysql.user;

Kết quả mẫu:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Bob              | %         |
| Manish           | %         |
| hbstudent        | localhost |
| root             | %         |
| ...              | ...       |
+------------------+-----------+

Thử xóa user 'hbstudent'

mysql> DROP USER 'hbstudent'@'localhost';
Query OK, 0 rows affected (0.17 sec)

Kiểm tra lại - user vẫn còn!

mysql> SELECT user, host FROM mysql.user;

Kết quả: user 'hbstudent'@'localhost' đã biến mất, nhưng nếu có user 'hbstudent'@'%' thì vẫn còn.

Nguyên nhân và giải pháp

  • User được định danh bằng cặp (user, host): 'user'@'localhost' khác 'user'@'%'
  • Kiểm tra kỹ host trước khi xóa: SELECT user, host FROM mysql.user WHERE user = 'hbstudent';
  • Xóa đúng cặp: DROP USER 'hbstudent'@'%'; nếu tồn tại
  • Flush privileges sau khi xóa: FLUSH PRIVILEGES;

Lưu ý quan trọng

MySQL 8.0+ yêu cầu quyền CREATE USER hoặc DELETE trên database mysql để thực hiện DROP USER.