在mysql中为所有用户授予主机上的所有特权

8
如何在mySQL中将所有权限授予所有用户?
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

我应该用什么替换用户名,以便在给定IP上允许每个用户使用?即使输入中没有任何用户名,如''?

我尝试在用户名中使用*%,但这并不起作用。

7个回答

5
你可以尝试这样做:
GRANT ALL PRIVILEGES ON *.* TO ''@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

手册中写道:

在这种情况下,任何使用正确密码连接到本地主机的用户都将被允许访问,并具有与匿名用户帐户相关联的特权。


我看到这个并认为这意味着未输入用户名的用户将被授予访问权限。您确定这是否允许例如rahul@localhost连接? - Tim Biegeleisen
它之前没用,现在却出了问题,我收到了“Access denied for user 'product_12345'@'localhost'”错误。 - user4965214

5

无论主机名和IP地址如何,这对所有MySQL用户都有效。

GRANT ALL ON <yourdbname>.* TO ''@'%' IDENTIFIED BY 'yourdbpassword';
FLUSH PRIVILEGES;

2
这应该可以运行:
GRANT ALL PRIVILEGES ON 'database'.'table' TO '%'@'1.2.3.4' WITH GRANT OPTION;

2
MySQL不允许在用户名中使用通配符。 - Tim Biegeleisen

2

在mysql授权权限命令中,通配符不适用于用户。如果您知道用户列表,则可以尝试以下方法:

 GRANT ALL PRIVILEGES ON *.* TO 'user1'@'1.2.3.4',
 'user2'@'1.2.3.4',
 'user3'@'1.2.3.4',
 'user4'@'1.2.3.4',
 'user5'@'1.2.3.4',
 'user6'@'1.2.3.4';

1

MySQL不支持通配符作为用户名,因此您不能在单个授权中执行该操作。 请参见官方文档


1
如果您想授予所有用户所有权限并能够在不需要密码的情况下使用,可以使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO ''@'%' IDENTIFIED BY '' WITH GRANT OPTION;

如果你有一个名为'my_db'的数据库,并且在本地主机上进行操作,命令可以如下所示:
GRANT ALL PRIVILEGES ON my_db.* TO ''@'localhsot' IDENTIFIED BY '' WITH GRANT OPTION;

我在执行这些命令时遇到了“您的SQL语法错误”的错误。 - parsecer

1

对于MariaDB

use mysql;
create user 'USER_NAME'@'192.168.1.%' identified by 'Password';
GRANT ALL PRIVILEGES ON *.* TO 'USER_NAME'@'192.168.1.%';
select user, host from user;

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