MySQL 开启和关闭远程访问权限

阅读时长: 5 分钟 1208 字

正文

在 MySQL 中,可以通过操作** mysql 数据库中的 user 表**来开启和关闭远程访问权限。

如下所示:

MySQL 是通过用户名(user)和客户端ip(host)来唯一确定一个用户。host 字段指定了允许用户连接的主机,它与 user 字段一起组成一个用户账户的唯一标识(即 'user'@'host')。

也就是说,可以设置同一个用户名在不同的客户端登陆时的密码不同,登陆后的权限也不同。通过查看mysql.user的表结构也可以看出,host和user是作为联合主键存在的。

所以说,我们只要修改相应的 host 字段就可以开启和关闭远程访问权限。host字段的常见值如下:

  • localhost:

表示用户只能从本地主机(即 MySQL 服务器所在的机器)连接。

  • 例如:'root'@'localhost' 表示用户 root 只能从本地连接。

  • %:

表示用户可以从任意主机连接。

  • 例如:'user'@'%' 表示用户 user 可以从任何 IP 地址或主机名连接。

  • 具体的 IP 地址或主机名:

表示用户只能从指定的 IP 地址或主机名连接。

  • 例如:'user'@'192.168.1.100' 表示用户 user 只能从 IP 地址 192.168.1.100 连接。

  • 127.0.0.1:

表示用户只能从本地主机的环回接口(即 localhost 的 IP 形式)连接。

  • 例如:'user'@'127.0.0.1' 表示用户 user 只能从 127.0.0.1 连接。

在修改 mysql.user 表后,我们运行 FLUSH PRIVILEGES; 命令就可以使更改生效。

更多关于 host 字段的知识如下:

补充资料

在 MySQL 中,mysql.user 表存储了用户账户和权限信息,其中 host 字段是一个非常重要的字段,它决定了用户可以从哪些主机连接到 MySQL 服务器。

mysql.user 表中的 host 字段

1. host 字段的作用

  • host 字段指定了允许用户连接的主机。

  • 它与 user 字段一起组成一个用户账户的唯一标识(即 'user'@'host')。

  • MySQL 通过 user 和 host 字段的组合来判断用户是否有权限连接到服务器。

2. host 字段的常见值

  • localhost:

表示用户只能从本地主机(即 MySQL 服务器所在的机器)连接。

  • 例如:'root'@'localhost' 表示用户 root 只能从本地连接。

  • %:

表示用户可以从任意主机连接。

  • 例如:'user'@'%' 表示用户 user 可以从任何 IP 地址或主机名连接。

  • 具体的 IP 地址或主机名:

表示用户只能从指定的 IP 地址或主机名连接。

  • 例如:'user'@'192.168.1.100' 表示用户 user 只能从 IP 地址 192.168.1.100 连接。

  • 127.0.0.1:

表示用户只能从本地主机的环回接口(即 localhost 的 IP 形式)连接。

  • 例如:'user'@'127.0.0.1' 表示用户 user 只能从 127.0.0.1 连接。

3. host 字段的匹配规则

  • MySQL 在验证用户连接时,会按照以下顺序匹配 host 字段:

精确匹配(例如 'user'@'192.168.1.100')。

  • 通配符匹配(例如 'user'@'%')。

  • 如果找不到匹配的记录,连接会被拒绝。

  • 注意:

如果有多个匹配的记录,MySQL 会选择最具体的一个。

  • 例如,'user'@'192.168.1.100' 比 'user'@'%' 更具体,因此会优先匹配。

4. 修改 host 字段

如果需要修改用户的 host 字段,可以使用以下 SQL 语句:

修改用户的 host 值

UPDATE mysql.user SET host = ‘新的host值’ WHERE user = ‘用户名’ AND host = ‘旧的host值’; FLUSH PRIVILEGES;

例如,将用户 user 的 host 从 localhost 改为 %:

UPDATE mysql.user SET host = ‘%’ WHERE user = ‘user’ AND host = ’localhost’; FLUSH PRIVILEGES;

创建新用户时指定 host

CREATE USER ‘用户名’@‘host值’ IDENTIFIED BY ‘密码’;

例如,创建一个用户 user,允许从任意主机连接:

CREATE USER ‘user’@’%’ IDENTIFIED BY ‘password’;

5. 查看 mysql.user 表中的 host 字段

可以运行以下 SQL 语句查看 mysql.user 表中的 host 字段:

SELECT user, host FROM mysql.user;

输出示例:

+——————+———–+ | user | host | +——————+———–+ | root | localhost | | user | % | | testuser | 192.168.1.100 | +——————+———–+

6. 注意事项

  • 安全性:

使用 % 允许从任意主机连接时,可能会增加安全风险。建议仅在必要时使用,并确保设置强密码。

  • 权限刷新:

修改 mysql.user 表后,必须运行 FLUSH PRIVILEGES; 以使更改生效。

  • 备份:

在修改 mysql.user 表之前,建议备份数据,以防止误操作。

总结

  • mysql.user 表中的 host 字段决定了用户可以从哪些主机连接到 MySQL 服务器。

  • 常见的 host 值包括 localhost、%、具体的 IP 地址或主机名。

  • 可以通过 UPDATE 语句修改 host 字段,或通过 CREATE USER 创建用户时指定 host。

  • 修改后需要运行 FLUSH PRIVILEGES; 以使更改生效。

如果你有其他问题或需要进一步帮助,请告诉我!

本网站已运行: 计算中...
备案 赣公网安备36072502000191 | 赣ICP备2024040374号
使用 Hugo 构建 · 主题 Stack 由 Jimmy 设计