我正在阅读 O'Relly “Learning MySQL”,它说您可以通过执行以下操作在 MySQL 中创建一个用户:
mysql> GRANT ALL ON *.* TO 'jill'@'%.invyhome.com' IDENTIFIED BY 'the_password';
Query OK, 0 rows affected (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
但如果我尝试这样做:
-> grant select on testgrounds.personas to ''@'localhost';
--> Error Code: 1133. Can't find any matching row in the user table
Run Code Online (Sandbox Code Playgroud)
但是如果我使用密码它会成功:
->grant select on testgrounds.personas to ''@'localhost' identified by 'pass';
--> 0 row(s) affected
Run Code Online (Sandbox Code Playgroud)
我不得不恢复用户 root 的权限,因为我正在试验并且我把它们搞砸了,所以我想在这样做之前我实际上可以使用书中的语句(我不记得 100%)
-> select current_user;
--> 'root@localhost'
-> show grants;
--> 'GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' IDENTIFIED BY PASSWORD \'*4ACFE3202A5FF5CF467898FC58AAB1D615029441\' WITH GRANT OPTION'
--> 'GRANT ALL PRIVILEGES ON `testgrounds`.* TO \'root\'@\'localhost\' WITH GRANT OPTION'
--> 'GRANT PROXY ON \'\'@\'\' TO \'root\'@\'localhost\' WITH GRANT OPTION'
Run Code Online (Sandbox Code Playgroud)
我的 MySQL 安装或设置有问题吗?
小智 3
这不是 MySQL 安装或设置的问题。
每个帐户名都由用户名和主机名组成,例如“user_name”@“host_name”,即使未指定主机名也是如此。来自MySQL 参考手册:
MySQL 帐户名由用户名和主机名组成。这使得可以为可以从不同主机连接的同名用户创建帐户。
这还允许 MySQL 根据它们连接的主机授予不同级别的权限。
当更新 MySQL 无法识别主机部分的帐户的授权时,它将返回错误代码 1133,除非它有密码来识别该帐户。
另外,MySQL 允许仅通过用户名指定帐户名,但在这种情况下,它被视为“user_name”@“%”。
| 归档时间: |
|
| 查看次数: |
41387 次 |
| 最近记录: |