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'));