创建用户和在mysql中授予授权之间的“%”是什么意思

时间:2019-12-06 15:18:11

标签: mysql

因此,当您创建用户并向创建的用户授予权限时,'%'和'localhost'的区别基本上是什么。

当您创建/授予一个分别具有'localhost'和'%'的用户时会发生什么

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
vs
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON db.* TO 'user'@'localhost';
vs
GRANT ALL PRIVILEGES ON db.* TO 'user'@'%';

似乎如果我使用“ localhost”创建用户,则意味着我只能在本地服务器上登录该用户,而不能从远程登录。就授予“ localhost”而言,是否意味着用户只能从本地服务器访问数据库,而不能从远程服务器访问数据库?

1 个答案:

答案 0 :(得分:2)

MySQL将'%'视为与任何通过TCP连接的客户端匹配的通配符。因此,任何主机名或任何IP地址,包括127.0.0.1

MySQL将'localhost'视为特例。它仅与仅通过UNIX套接字连接的客户端匹配。 UNIX套接字比TCP快,但是它只能在本地工作。

如果要创建一个可以通过TCP或UNIX套接字从任何主机进行连接的用户,则实际上必须创建两个用户。您可以给他们相同的密码并授予他们相同的特权。 MySQL不能确保这一点。