为什么 'identified by' 在某些授权命令中是强制性的?
Why is 'identified by' mandatory in some grant commands?
我不明白这个。我有一个数据库 my_database
和一个 table、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
部分是可选的?
也许您可以将 GRANT
语句限制为只有通过此特定身份验证方法(此处为密码)登录的用户。至少CREATE USER
的语句是这样的,我想这里应该也差不多……
详情请在this页面搜索auth_option
。
很可能是 MySQL 复制问题。
我不明白这个。我有一个数据库 my_database
和一个 table、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
部分是可选的?
也许您可以将 GRANT
语句限制为只有通过此特定身份验证方法(此处为密码)登录的用户。至少CREATE USER
的语句是这样的,我想这里应该也差不多……
详情请在this页面搜索auth_option
。
很可能是 MySQL 复制问题。