MySQL 允许远程连接


在安装完 MySQL 服务端之后,默认并不会允许远端设备连入本地数据库,仅限 localhost 登录。为了允许远端连接,需在白名单中添加指定 IP。

  • MySQL 版本:5.7

终端登录 MySQL 数据库(Windows 则需要 cd 到 MySQL 安装目录下再执行),并输入 root 密码:

1
2
# Unix like
mysql -u root -p
1
2
3
# Windows
cd 'C:\Program Files\MySQL\MySQL Server 5.7\bin\' # default
.\mysql.exe -u root -p

用如下命令查看当前 MySQL 有哪些用户登录的权限:

1
2
3
4
-- 切换至 mysql 库
use mysql;
-- 查询用户
select user, host from user;

结果如下,可见默认只有 localhost 被允许登录到 root 用户:

1
2
3
4
5
6
7
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
+-----------+-----------+
3 rows in set (0.00 sec)

允许 root 用户从任意 IP 登录(任意 IP 用 % 表示)或指定IP登录,权限为 ALL PRIVILEGES ,密码自定义:

1
2
3
4
5
6
-- 允许 root 用户从任意 IP 登录
Grant all privileges on *.* to root@'%' identified by '[root密码]';
-- 允许 root 用户从指定 IP 登录
Grant all privileges on *.* to root@'[IP地址]' identified by '[root密码]';
-- 使修改立即生效
flush privileges;

再次查表结果如下,root 已可以由任意 IP (% 表示)登录:

1
2
3
4
5
6
7
8
+-----------+-----------+
| user | host |
+-----------+-----------+
| root | % |
| mysql.sys | localhost |
| root | localhost |
+-----------+-----------+
3 rows in set (0.00 sec)

或者将 root 用户的 host 字段改为 %,也能实现允许任意 IP 登录:

1
2
3
4
5
6
-- 切换至 mysql 库
use mysql;
-- 修改 host 字段
update user set host = '%' where user = 'root';
-- 使修改立即生效
flush privileges;

参考资料: