MySQL远程连接

MySQL 远程连接配置教程(基于实验截图)

本教程完全按照你的实验操作顺序整理,从配置文件修改到用户授权,再到远程连接测试,每一步都对应你的截图内容,可直接作为笔记或实验报告使用。


🔧 第一步:修改 MySQL 配置文件,允许监听外部 IP

  1. 编辑 MySQL 配置文件 在终端中打开 MySQL 的配置文件(通常路径为 /etc/mysql/mysql.conf.d/mysqld.cnf)。

    复制代码
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  2. 修改绑定地址 找到 bind-address 这一行:

    ini

    复制代码
    bind-address = 127.0.0.1

    将其修改为:

    复制代码
    bind-address = 0.0.0.0

    这样 MySQL 就会监听所有网卡的 IP,允许外部设备连接。


第二步:登录 MySQL,查看现有用户与权限

  1. 登录 MySQL 服务器

    复制代码
    mysql -u root -p
  2. 查看所有数据库

    复制代码
    show databases;

    执行后会列出当前 MySQL 中的所有数据库,例如 c2305dbmysqlinformation_schema 等。

  3. 切换到 mysql 系统数据库 这个数据库存储了所有用户和权限信息。

    复制代码
    use mysql;
  4. 查看 mysql 库中的所有表

    复制代码
    show tables;

    在表列表中找到 user 表,它是存储用户信息的核心表。

  5. 查看现有用户信息

    复制代码
    select user,host,plugin from user;

    执行后会显示当前所有用户及其允许的连接主机、密码加密方式。默认情况下,所有用户的 host 都是 localhost,只能本地连接。

6.查看 mysql 系统库的表结构(对应这张截图)

在你切换到 mysql 数据库之后,执行这条命令可以查看该库下所有的系统表:

复制代码
show tables;

执行后,你会看到一个包含 37 张表的列表,这就是截图里的内容。

  • 这些都是 MySQL 的核心系统表,负责存储用户权限、数据库配置、日志信息等底层数据。
  • 其中,user是我们最关心的,它存储了所有 MySQL 用户的账号、允许连接的主机、密码加密方式等关键信息。
  • 其他表如 tables_privprocs_priv 则分别存储了表级、存储过程级的权限信息。

这一步的目的,就是为了让你确认 user 表的存在,为后续查看和修改用户信息做准备。

. select user,host,plugin from mysql.user; → 查看当前所有用户的核心信息

这是最关键的一步,直接从 user 表里提取了 3 个核心字段:

字段名 作用
user 用户名,比如 rootstu1
host 允许该用户连接的主机地址,localhost 表示只能本地连接% 表示允许所有远程 IP 连接
plugin 密码加密方式,mysql_native_password 兼容性更好,支持远程连接;caching_sha2_password 更安全,但部分旧客户端可能不支持

从你的查询结果可以看到:

  • 所有默认用户(比如 rootstu1)的 host 都是 localhost,这意味着它们只能在数据库所在的服务器上本地登录,无法从其他电脑远程连接。
  • 这正是你需要创建 root@'%' 用户的原因 ------ 因为现有的 root@localhost 不能远程访问。

第三步:创建远程连接用户并授权

  1. 创建允许远程连接的 root 用户 执行以下 SQL,创建一个 root 用户,允许从任何 IP(% 代表所有 IP)连接,并使用 mysql_native_password 加密方式(兼容性更好):

    复制代码
    create user 'root'@'%' identified WITH mysql_native_password by '123456';
  2. 再次查看用户列表,确认创建成功

    复制代码
    select user,host,plugin from user;

    此时会看到新增的 root 用户,其 host%

  3. 为远程用户授权 仅创建用户还无法看到所有数据库,需要授予权限。执行以下 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_schemaperformance_schema 这两个默认数据库。

  • 我能看到这些:

    对方是这样的:

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

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


关键知识点总结

  1. bind-address = 0.0.0.0:让 MySQL 监听所有网卡,是远程连接的前提。
  2. host = %:表示允许从任何 IP 连接,生产环境中建议替换为具体 IP 以提高安全性。
  3. 授权语句 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%':必须执行此步骤,否则远程用户只能看到默认数据库,无法访问业务数据。
  4. 权限刷新 FLUSH PRIVILEGES:修改权限后必须执行,否则新权限不会立即生效。
相关推荐
zhujian826372 小时前
二十八、【鸿蒙 NEXT】orm框架
数据库·华为·sqlite·harmonyos·orm框架
Dxy12393102162 小时前
PostgreSQL与MySQL有哪些区别:从架构到应用场景的深度解析
mysql·postgresql·架构
被星1砸昏头2 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
王文搏2 小时前
MySQL 常用函数用法速查(含解释与示例)
数据库·mysql·adb
liux35282 小时前
MySQL高可用架构全面解析:MHA原理、部署与运维实践(九)
mysql·高可用
信创天地2 小时前
国产关系型数据库部署与权限管理实战:人大金仓、达梦、南大通用、华为GaussDB
数据库·华为·gaussdb
l1t2 小时前
psql 中的流水线操作(PostgreSQL 18)
数据库·人工智能·postgresql
enfpZZ小狗2 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
Geek攻城猫2 小时前
深入理解 SQL 多字段排序:从基础到高级技巧
数据库·sql