| 2025-03-6
在 Linux 系统下,要让 MySQL 数据库支持远程访问,关键在于修改 MySQL 配置文件以及授权远程访问用户。以下将详细介绍具体步骤。
1、 确认 MySQL 已安装:在终端执行命令 rpm -qa | grep mysql(适用于基于 RPM 包管理的系统,如 CentOS)或 dpkg -l | grep mysql(适用于基于 DEB 包管理的系统,如 Ubuntu),以确认 MySQL 已安装。若未安装,可根据系统类型使用相应的包管理器进行安装。例如在 CentOS 上,执行 yum install mysql - server 安装 MySQL 服务器。
2、 确保 MySQL 服务运行:使用命令 systemctl status mysqld(CentOS)或 systemctl status mysql(Ubuntu)检查 MySQL 服务状态。若服务未运行,执行 systemctl start mysqld(CentOS)或 systemctl start mysql(Ubuntu)启动服务。同时,可使用 systemctl enable mysqld(CentOS)或 systemctl enable mysql(Ubuntu)设置开机自启。
1、 找到配置文件路径:不同 Linux 发行版中,MySQL 配置文件路径略有不同。在 CentOS 中,配置文件通常为 /etc/my.cnf;在 Ubuntu 中,一般是 /etc/mysql/mysql.conf.d/mysqld.cnf。使用文本编辑器(如 vim)打开该文件。
2、 注释绑定地址:在配置文件中找到 bind - address = 127.0.0.1 这一行,该行限制了 MySQL 仅监听本地回环地址,从而禁止远程访问。在该行前面添加注释符号 #,将其注释掉,即 #bind - address = 127.0.0.1。这样 MySQL 就会监听所有可用网络接口,允许远程连接。保存并关闭文件。
1、 登录 MySQL:在终端执行 mysql - u root - p,输入 root 用户密码登录 MySQL 数据库。
2、 授予远程访问权限:执行以下 SQL 语句授予远程访问权限。假设要允许来自 192.168.1.0/24 网段的用户 testuser 以密码 testpass 远程访问,并对所有数据库和表具有所有权限:
CREATE USER 'testuser'@'192.168.1.%' IDENTIFIED BY 'testpass';
GRANT ALL PRIVILEGES ON . TO 'testuser'@'192.168.1.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
CREATE USER 语句创建了一个新用户,并指定了该用户可从哪个网段远程连接以及设置密码。GRANT 语句授予该用户对所有数据库(.)的所有权限,并允许其将权限授予其他用户。FLUSH PRIVILEGES 语句使权限设置立即生效。
1、 检查防火墙状态:如果 Linux 系统启用了防火墙(如 firewalld 在 CentOS 上,ufw 在 Ubuntu 上),需要允许 MySQL 的端口(默认为 3306)通过防火墙。在 CentOS 上,执行 systemctl status firewalld 检查 firewalld 状态;在 Ubuntu 上,执行 ufw status 检查 ufw 状态。
2、 开放 MySQL 端口:若防火墙处于启用状态,在 CentOS 上,执行 firewall - cmd --zone = public --add - port = 3306/tcp --permanent 开放 3306 端口,并使用 firewall - cmd --reload 重新加载防火墙配置使设置生效。在 Ubuntu 上,执行 ufw allow 3306/tcp 开放端口。
完成以上步骤后,MySQL 就已在 Linux 系统上开启远程访问权限,远程客户端可使用授权的用户名、密码及服务器 IP 地址连接到 MySQL 数据库。
1、 MySQL 用户权限管理深入:MySQL 的用户权限管理非常细致,除了 ALL PRIVILEGES 外,还有 SELECT、INSERT、UPDATE、DELETE 等单项权限。可以针对不同用户和数据库对象(如表、视图等)精确授予权限,以增强数据库安全性。例如,只允许某个用户对特定数据库的特定表有 SELECT 权限。
2、 使用 SSL 加密远程连接:为保障远程连接的安全性,可启用 MySQL 的 SSL 加密功能。在 MySQL 配置文件中配置 SSL 相关参数,并为客户端提供 SSL 证书。这样在远程连接时,数据传输将被加密,防止数据被窃取或篡改。
3、 排查远程连接故障:若远程连接 MySQL 失败,首先检查网络连接是否正常,可使用 ping 命令测试服务器 IP 可达性。然后检查 MySQL 日志文件(如 /var/log/mysqld.log 或 /var/log/mysql/error.log),查看是否有连接相关的错误信息,如权限不足、端口未监听等,根据错误提示进行排查。