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

正文

在 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 字段:
    1. 精确匹配(例如 'user'@'192.168.1.100')。
    2. 通配符匹配(例如 'user'@'%')。
    3. 如果找不到匹配的记录,连接会被拒绝。
  • 注意
    • 如果有多个匹配的记录,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; 以使更改生效。

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

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇