如何在MySql中授予用户所有权限

3
我在MySql中以root用户身份连接。 Root用户拥有GRANT和...
grant all privileges on *.* to 'root'@'localhost' with grant option;

上一次我进行操作时没有返回任何错误代码。

但是,当我将根用户更改为sqluser时,出现了以下错误:"错误代码:1410。您无权使用GRANT创建用户"

之前的操作:

grant grant option on *.* to 'sqluser'@'%'

当我使用远程主机运行查询时,它没有返回错误代码。但是,当我在本地主机上运行查询时,会出现编号为1410的错误代码。

我安装了MySql 8.0。

如何使授权所有权限生效?


在MySQL中,通配符'%'不会匹配本地主机。 - Bill Karwin
在MySQL中,“%”通配符不匹配localhost。你确定吗?@BillKarwin,MySQL文档告诉我相反的情况:“例如,主机值“%”匹配任何主机名”来源https://dev.mysql.com/doc/refman/8.0/en/account-names.html - Raymond Nijland
@RaymondNijland https://bugs.mysql.com/bug.php?id=69570 当使用TCP连接时,%和_通配符仅适用于主机名或IP地址,而不适用于使用UNIX套接字连接的“localhost”。这对我来说一直很奇怪,但这就是它的实现方式。 - Bill Karwin
这意味着如果您想要一个用户和密码用于TCP连接和本地主机连接,实际上您必须在mysql.user表中创建两个记录,一个带有host=%(或其他特定的主机/IP地址),另一个带有host=localhost。MySQL一直都是这样的。 - Bill Karwin
2个回答

9

在设置一个新的mysql数据库时,我遇到了同样的问题,即在添加第一个用户时。

我发现我的问题是通过从GRANT中删除@'localhost'来解决的。

这个有效:

mysql> grant all privileges on *.* to 'laravel_user';

查询OK,0行受影响(0.10秒)

这个无效:

mysql> grant all privileges on *.* to 'laravel_user'@'localhost';

ERROR 1410 (42000): 您不被允许使用GRANT创建用户


mysql version:
$ mysql -V
mysql  Ver 8.0.12 for osx10.14 on x86_64 (Homebrew)

I was following this guide to set up the database:
https://www.a2hosting.co.uk/kb/developer-corner/mysql/managing-mysql-databases-and-users-from-the-command-line

1
你节省了我很多时间,谢谢! - Volodymyr Taras

-2

测试这段代码。

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

1
这个程序返回了错误代码为1064(与SQL语法错误有关)。 - mateuszs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接