ERROR 1396 (HY000): Операция CREATE USER не удалась для 'username' @'localhost' IDENTIFIED BY 'mypassword';

Вряд ли я удалил своего пользователя root из таблицы mysql.user.

delete from mysql.user where user='username';

Чтобы сделать того же пользователя root, я пытаюсь запустить ниже запроса,

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

Я получаю ошибку как

ERROR 1396 (HY000): Operation CREATE USER failed for 'username'@'localhost'

По этот ответ SO, я пробовал FLUSH PRIVILEGES;, но все-таки получаю ту же ошибку.

Любая идея, что происходит не так?


Ответ

Мне также пришлось удалить то же самое из mysql.db table

delete from mysql.db where user='username';

Что это...

Ответ 1

Если вы используете команду DROP USER для удаления пользователя, пользователь полностью удаляется. Если вам нужно добавить пользователя с таким же именем позже, вы можете использовать команду FLUSH PRIVILEGES для полного удаления привилегий из памяти mysql.

DROP USER [email protected];

Вы должны restart mysql или запустить FLUSH PRIVILEGES перед тем, как создать того же пользователя, потому что есть проблемы с привилегиями. Чтобы перезагрузить mysql в системах на основе Linux

sudo service mysql restart

для перезапуска в системах Windows

net stop mysql
net start mysql

Чтобы сбросить привилегии в приглашении mysql

FLUSH PRIVILEGES;

В качестве альтернативы вы можете использовать команду REVOKE, если вы знаете, какие привилегии у пользователя

REVOKE privillege1, privillege2, ... FROM [email protected]

Ответ 2

Этот пользователь должен быть указан в других таблицах из системной схемы mysql. Я бы воссоздал пользователя так же, как вы его удалили:

INSERT INTO mysql.user (user, host, password)
VALUES ('root', 'localhost', PASSWORD('pasw'));

Тогда

FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

Еще одна причина никогда не вмешиваться в эту схему (извините, я не мог помочь).

Ответ 3

Как и выше, поле password не существует в моем случае, а mysql вызывает ошибку.

Эта команда помогла:

INSERT INTO mysql.user (user, host, ssl_cipher, x509_issuer, x509_subject, plugin, authentication_string) VALUES ('user', 'localhost', '', '', '', 'mysql_native_password', PASSWORD('pass'));