Почему в некоторых командах гранта слово "идентифицируется" является обязательным?
Я не понимаю этого. У меня есть база данных, my_database
, и таблица, tablename
. У меня есть пользователь ken
, который имеет доступ к базе данных только для чтения. Этот пользователь уже настроен с паролем, и люди используют это имя пользователя удаленно. Я хочу дать им некоторые разрешения на tablename
.
Это не работает:
mysql> grant SELECT, INSERT, UPDATE, DELETE on my_database.tablename to 'ken'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Но это так:
mysql> grant SELECT, INSERT, UPDATE, DELETE on my_database.tablename to 'ken'@'%' identified by password '<existing password hash>';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Почему? Я думал, что часть identified by
необязательна, если они уже являются пользователями?
2 ответа:
Возможно, вы можете ограничить оператор
GRANT
для пользователя, только если он вошел в систему с помощью этого конкретного метода аутентификации (здесь: пароль). Так, по крайней мере, обстоит дело с утверждениемCREATE USER
, и я думаю, что здесь это должно быть похоже...Для получения подробной информации, пожалуйста, найдите
auth_option
наэтой странице .