Я этого не понимаю. У меня есть база данных, 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
не является обязательной, если она уже является пользователем?
Просто из любопытства: почему вы делаете что-то настолько запутанное, чтобы предоставить возможность «ВСТАВИТЬ», «ОБНОВИТЬ» и «УДАЛИТЬ» пользователю, которого вы назвали 'read_only' (который, кажется, указывает, что они разрешено читать ('SELECT') из данных? Это кажется очень плохо продуманной идеей для меня. –
Потому что это не настоящее имя пользователя. –
Хм .. ОК. Лично я бы пошел с« У меня есть пользователь , Джо, который ... ». :-) –