При удалении пользователя MySQL сообщает об ошибке:
mysql> drop user itnews; ERROR 1396 (HY000): Operation DROP USER failed for 'itnews'@'%'
Хотя пользователь вроде как есть:
mysql> SELECT User FROM mysql.user; +-------------+ | User | +-------------+ | itnews |
По совету мануала – проверяем права пользователя:
mysql> show grants for 'itnews'@'%'; ERROR 1141 (42000): There is no such grant defined for user 'itnews' on host '%'
И теперь понятно в чём ошибка – надо было при выборке добавить поле Host:
mysql> select User, Host from mysql.user where user like 'itnews'; +--------+-----------+ | User | Host | +--------+-----------+ | itnews | localhost | +--------+-----------+ 1 row in set (0.00 sec)
Повторяем запрос:
mysql> show grants for 'itnews'@'localhost'; +---------------------------------------------------------------------------------------------------------------+ | Grants for itnews@localhost | +---------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'itnews'@'localhost' IDENTIFIED BY PASSWORD '*C90D2864A93C2BAC3C4DF69A43687C5EF6800A7D' | | GRANT ALL PRIVILEGES ON `itnews_db1`.* TO 'itnews'@'localhost' | +---------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
И теперь удаляем:
mysql> drop user 'itnews'@'localhost';; Query OK, 0 rows affected (0.00 sec)
Если всё же имя было указано верно – то вот несколько советов.
Проверьте нет ли активных сессий пользователя:
mysql> select * from information_schema.processlist where user='postfix'; +------+---------+-----------------+---------+---------+------+-------+------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | +------+---------+-----------------+---------+---------+------+-------+------+ | 9802 | postfix | localhost:38181 | postfix | Sleep | 277 | | NULL | | 1 | postfix | localhost:35533 | postfix | Sleep | 220 | | NULL | +------+---------+-----------------+---------+---------+------+-------+------+ 2 rows in set (0.00 sec)
Остановите процесс, если такой есть:
mysql> kill 463; Query OK, 0 rows affected (0.01 sec)
Тут для примера добавим пользователя:
mysql> grant all privileges on test_test.* to 'test'@'localhost'; Query OK, 0 rows affected (0.00 sec)
После того, как остановили процесс – отзовите права пользователя на базу:
mysql> revoke all privileges on test_test.* from 'test'@'localhost'; Query OK, 0 rows affected (0.00 sec)
И после этого попробуйте удалить пользователя:
mysql> drop user 'test'@'localhost'; Query OK, 0 rows affected (0.00 sec)