Почему в некоторых командах гранта слово "идентифицируется" является обязательным?


Я не понимаю этого. У меня есть база данных, 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 5

2 ответа:

Возможно, вы можете ограничить оператор GRANT для пользователя, только если он вошел в систему с помощью этого конкретного метода аутентификации (здесь: пароль). Так, по крайней мере, обстоит дело с утверждением CREATE USER, и я думаю, что здесь это должно быть похоже...

Для получения подробной информации, пожалуйста, найдите auth_option наэтой странице .

Скорее всего, проблема репликации MySQL.