MySQL 远程连接配置教程(基于实验截图)
本教程完全按照你的实验操作顺序整理,从配置文件修改到用户授权,再到远程连接测试,每一步都对应你的截图内容,可直接作为笔记或实验报告使用。
🔧 第一步:修改 MySQL 配置文件,允许监听外部 IP

-
编辑 MySQL 配置文件 在终端中打开 MySQL 的配置文件(通常路径为
/etc/mysql/mysql.conf.d/mysqld.cnf)。sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf -
修改绑定地址 找到
bind-address这一行:ini
bind-address = 127.0.0.1将其修改为:
bind-address = 0.0.0.0这样 MySQL 就会监听所有网卡的 IP,允许外部设备连接。
第二步:登录 MySQL,查看现有用户与权限

-
登录 MySQL 服务器
mysql -u root -p -
查看所有数据库
show databases;执行后会列出当前 MySQL 中的所有数据库,例如
c2305db、mysql、information_schema等。 -
切换到
mysql系统数据库 这个数据库存储了所有用户和权限信息。use mysql; -
查看
mysql库中的所有表show tables;在表列表中找到
user表,它是存储用户信息的核心表。 -
查看现有用户信息
select user,host,plugin from user;执行后会显示当前所有用户及其允许的连接主机、密码加密方式。默认情况下,所有用户的
host都是localhost,只能本地连接。
6.查看 mysql 系统库的表结构(对应这张截图)

在你切换到 mysql 数据库之后,执行这条命令可以查看该库下所有的系统表:
show tables;
执行后,你会看到一个包含 37 张表的列表,这就是截图里的内容。
- 这些都是 MySQL 的核心系统表,负责存储用户权限、数据库配置、日志信息等底层数据。
- 其中,
user表是我们最关心的,它存储了所有 MySQL 用户的账号、允许连接的主机、密码加密方式等关键信息。 - 其他表如
tables_priv、procs_priv则分别存储了表级、存储过程级的权限信息。
这一步的目的,就是为了让你确认 user 表的存在,为后续查看和修改用户信息做准备。
. select user,host,plugin from mysql.user; → 查看当前所有用户的核心信息
这是最关键的一步,直接从 user 表里提取了 3 个核心字段:
| 字段名 | 作用 |
|---|---|
user |
用户名,比如 root、stu1 |
host |
允许该用户连接的主机地址,localhost 表示只能本地连接 ,% 表示允许所有远程 IP 连接 |
plugin |
密码加密方式,mysql_native_password 兼容性更好,支持远程连接;caching_sha2_password 更安全,但部分旧客户端可能不支持 |
从你的查询结果可以看到:
- 所有默认用户(比如
root、stu1)的host都是localhost,这意味着它们只能在数据库所在的服务器上本地登录,无法从其他电脑远程连接。 - 这正是你需要创建
root@'%'用户的原因 ------ 因为现有的root@localhost不能远程访问。
第三步:创建远程连接用户并授权

-
创建允许远程连接的
root用户 执行以下 SQL,创建一个root用户,允许从任何 IP(%代表所有 IP)连接,并使用mysql_native_password加密方式(兼容性更好):create user 'root'@'%' identified WITH mysql_native_password by '123456'; -
再次查看用户列表,确认创建成功
select user,host,plugin from user;此时会看到新增的
root用户,其host为%。 -
为远程用户授权 仅创建用户还无法看到所有数据库,需要授予权限。执行以下 SQL,授予该用户对所有数据库和表的全部权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';刷新权限使修改立即生效:
FLUSH PRIVILEGES;
🔄 第四步:重启 MySQL 服务,使配置生效
修改配置文件和用户权限后,必须重启 MySQL 服务才能让所有设置生效:

sudo service mysql restart
第五步:测试远程连接
在另一台电脑的终端中,使用以下命令连接远程 MySQL 服务器(替换为目标服务器的 IP):

mysql -uroot -h192.168.5.222 -p
-
输入密码(这里是
123456)后,如果成功进入 MySQL 命令行,说明远程连接配置完成。 -
连接成功后,执行
show databases;,你会发现一开始只能看到information_schema和performance_schema这两个默认数据库。 -
我能看到这些:

对方是这样的:

-
当对方完成授权(
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%')后,再次执行show databases;,就能看到所有数据库(如c2312db、mysql、sys等)。 -


对方给了授权后 就能看见了

关键知识点总结
bind-address = 0.0.0.0:让 MySQL 监听所有网卡,是远程连接的前提。host = %:表示允许从任何 IP 连接,生产环境中建议替换为具体 IP 以提高安全性。- 授权语句
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%':必须执行此步骤,否则远程用户只能看到默认数据库,无法访问业务数据。 - 权限刷新
FLUSH PRIVILEGES:修改权限后必须执行,否则新权限不会立即生效。