Невозможно найти подходящую строку в таблице пользователя.
Я пытаюсь выполнить эти запросы -
DROP DATABASE IF EXISTS `hotel`;
GRANT USAGE ON *.* TO 'user'@'localhost';
DROP USER 'user'@'localhost';
CREATE USER [email protected] IDENTIFIED BY 'user';
CREATE DATABASE `hotel`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
GRANT USAGE ON *.* to 'user'@'localhost' identified by 'user';
Но я всегда получаю ошибку на
GRANT USAGE ON *.* TO 'user'@'localhost' Error Code: 1133. Can't find any matching row in the user table 0.000 sec
Я думал, что Grant usage
создает нового пользователя, если пользователь не существует. Что не так?
Ответы
Ответ 1
Я думал, что использование Grant создает нового пользователя, если пользователь не существует. Что не так?
Из документации вы можете установить параметр, позволяющий mysql создавать пользователя, если он не существует.
NO_AUTO_CREATE_USER
Предотвратите автоматическое создание оператора GRANT, если в противном случае это сделало бы, если непустой пароль также указано.
Чтобы установить параметр:
Вы можете изменить режим SQL во время выполнения, используя SET [GLOBAL | SESSION] sql_mode = 'modes' для установки системного значения sql_mode.
Ответ 2
Я получил ту же ошибку с
grant all on newdb.* to [email protected];
разрешено с помощью 'identited':
grant all on newdb.* to [email protected] identified by 'password';
Ответ 3
Команда GRANT
больше не создает пользователей автоматически.
Не NO_AUTO_CREATE_USER
переменную NO_AUTO_CREATE_USER
, вместо этого сначала создайте пользователя с помощью команды CREATE USER
, затем предоставьте права:
DROP USER IF EXISTS 'user'@'localhost';
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'localhost';
Ответ 4
Попробуйте добавить в конец скрипта:
FLUSH PRIVILEGES;