使用 CentOS 6,以 身份登录 MySQL root
,输入命令:
create user 'user123' identified by 'pass123';
运行正常。但是当我尝试为该用户提供super user privileges
:
grant all on *.* to 'user123' identified by 'pass123';
我收到错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
然后
select * from mysql.user;
表明 root 在所有列中都有 Y,因此应该拥有所有权限。
如果有人能帮助我找出为什么 root 无法授予权限,我将非常感激,因为我不明白为什么它不起作用。
谢谢
答案1
MySQL 中的权限与“用户名”相关和一个“主机”。主机可以是域名、IP 地址或“localhost”。其中任何一个都可以包含通配符%
。如果您从错误的地方连接,即使使用正确的用户名和密码,您仍然会收到权限被拒绝的错误。
这些不同的用户中的每一个都可以对不同的数据库、表、行和命令拥有不同的访问权限。
还值得注意的是,“127.0.0.1”与“localhost”不同,因为mysql
在命令行上使用客户端将使用套接字而不是 IP 进行连接。如果您想mysql
在 MySQL 服务器上使用客户端时使用 IP 进行连接,您可以指定-h <IP address>
。
要查看所有不同的“用户”:
SELECT user,host,password FROM mysql.user;