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

Khắc phục ERROR 1396: DROP USER thất bại cho 'user'@'localhost'

Lỗi DROP USER khi host không khớp

Lỗi ERROR 1396 (HY000): Operation DROP USER failed for 'user'@'localhost' xảy ra khi user được tạo với host '%' (bất kỳ host nào) nhưng bạn cố gắng drop với host 'localhost'.

Nguyên nhân

MySQL phân biệt user theo cặp (user, host). 'Jack'@'%' và 'Jack'@'localhost' là 2 user khác nhau.

Minh họa

Tạo user với host %:

CREATE USER 'Jack'@'%' IDENTIFIED BY '1234';

Kiểm tra:

SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Jack             | %         |
| ...              | ...       |
+------------------+-----------+

Drop sai host → LỖI:

DROP USER 'Jack'@'localhost';
-- ERROR 1396 (HY000): Operation DROP USER failed for 'Jack'@'localhost'

Drop đúng host → THÀNH CÔNG:

DROP USER 'Jack'@'%';
-- Query OK, 0 rows affected

Cách khắc phục

  1. Kiểm tra host thực của user: SELECT user, host FROM mysql.user WHERE user = 'ten_user';
  2. DROP với đúng host tìm được.
  3. Nếu muốn user chỉ truy cập từ localhost: CREATE USER 'Jack'@'localhost' IDENTIFIED BY '...'; (tạo mới, không rename được host).

Mẹo: Drop nhiều host cùng lúc

DROP USER 'Jack'@'%', 'Jack'@'localhost', 'Jack'@'192.168.1.%';

Liên quan

  • RENAME USER 'Jack'@'%' TO 'Jack'@'localhost'; (MySQL 5.7+) đổi host.
  • SHOW GRANTS FOR 'Jack'@'%'; xem quyền trước khi drop.