在CentOS系统上远程安装并配置MySQL数据库是服务器管理中的一项常见任务,本文将提供一个详细、分步的指南,帮助您完成从准备工作到实现远程连接的全过程,确保安装过程既安全又高效。

准备工作
在开始安装之前,确保您的系统环境满足基本要求,您需要一台运行CentOS 7或更高版本的服务器,并拥有具备sudo权限的非root用户账户,通过SSH客户端远程连接到您的服务器。
第一步是更新系统软件包到最新版本,这可以修复已知的漏洞并确保所有依赖项都是最新的,执行以下命令:
sudo yum update -y
检查系统中是否已安装了MariaDB或旧版本的MySQL,CentOS 7的默认源中包含MariaDB,它与MySQL可能存在冲突,如果存在,请先将其移除。
# 检查是否已安装 rpm -qa | grep -i mariadb # 或 rpm -qa | grep -i mysql # 如果存在,使用以下命令卸载 sudo yum remove mariadb-libs -y
安装MySQL官方源
为了获取最新稳定版的MySQL,推荐使用MySQL官方提供的Yum仓库,而不是CentOS默认的软件源。
访问MySQL官方Yum仓库下载页面,找到适用于您CentOS版本的RPM包链接,使用wget命令下载并安装它,对于CentOS 7:
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm sudo yum localinstall mysql80-community-release-el7-5.noarch.rpm -y
安装此RPM包后,您的系统将拥有两个新的MySQL仓库(mysql80-community和mysql57-community),默认情况下,将启用MySQL 8.0的仓库,如果您想安装其他版本,可以使用yum-config-manager或手动编辑/etc/yum.repos.d/mysql-community.repo文件来切换。
安装MySQL服务器
可以开始安装MySQL服务器了,执行以下命令,Yum会自动处理所有依赖关系:
sudo yum install mysql-community-server -y
安装过程可能需要几分钟时间,具体取决于您的网络速度和服务器性能。
启动与安全配置
安装完成后,MySQL服务默认是停止的,我们需要启动它,并设置为开机自启:

sudo systemctl start mysqld sudo systemctl enable mysqld
MySQL 8.0在首次启动时会为root用户生成一个临时密码,并记录在日志文件中,您可以通过以下命令查看此密码:
sudo grep 'temporary password' /var/log/mysqld.log
复制此临时密码,然后运行安全配置脚本mysql_secure_installation,这个脚本将引导您完成一系列安全设置,是保护数据库安全的关键步骤。
sudo mysql_secure_installation
脚本会依次提示您:
- 验证密码策略组件:询问是否使用密码强度验证插件,建议选择
y。 - 设置root密码:输入您想为root用户设置的新密码,强度需符合策略要求。
- 移除匿名用户:建议选择
y,移除匿名账户可以增强安全性。 - 禁止root用户远程登录:建议选择
y,我们将创建一个专门用于远程连接的用户,而不是直接使用root。 - 移除测试数据库:建议选择
y,删除默认的测试数据库。 - 重新加载权限表:选择
y,使以上更改立即生效。
配置远程访问
默认情况下,MySQL服务器仅监听本地回环地址(127.0.0.1),无法从外部网络访问,要允许远程连接,需要修改其主配置文件。
配置文件通常位于/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf,使用文本编辑器打开它:
sudo vi /etc/my.cnf.d/mysql-server.cnf
在[mysqld]部分,找到或添加bind-address参数,将其值修改为0.0.0,表示MySQL服务器将监听所有网络接口。
[mysqld] # ... 其他配置 ... bind-address = 0.0.0.0 # ... 其他配置 ...
保存并退出编辑器后,重启MySQL服务以使配置生效:
sudo systemctl restart mysqld
创建远程用户并授权
现在服务器已准备好接受连接,但还需要一个拥有远程访问权限的数据库用户,以root用户登录到MySQL:
mysql -u root -p
输入您之前设置的root密码,进入MySQL命令行后,执行以下SQL语句来创建一个新用户(例如remote_user)并授予其访问权限。

-- 创建一个允许从任何IP地址连接的用户 CREATE USER 'remote_user'@'%' IDENTIFIED BY 'YourStrongPassword'; -- 授予该用户对所有数据库的所有权限 GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; -- 刷新权限,使更改立即生效 FLUSH PRIVILEGES; -- 退出MySQL EXIT;
安全提示:将替换为特定的客户端IP地址(例如'remote_user'@'192.168.1.100')可以显著提高安全性,只允许信任的主机连接。
配置防火墙
最后一步是确保服务器的防火墙允许MySQL的默认端口(3306)的流量,如果您使用的是firewalld(CentOS 7及更高版本的默认防火墙),执行以下命令:
# 永久开放3306端口 sudo firewall-cmd --permanent --add-port=3306/tcp # 重新加载防火墙规则 sudo firewall-cmd --reload
至此,您已成功在CentOS服务器上安装并配置了MySQL,使其可以接受远程连接,您可以使用任何MySQL客户端工具(如MySQL Workbench, Navicat, DBeaver等),通过您创建的远程用户凭据和服务器IP地址进行连接。
相关问答FAQs
问题1:连接时提示 “Access denied for user ‘remote_user’@’your_client_ip'”,该怎么办?
解答:这个错误表示用户身份验证失败或权限不足,请按以下步骤排查:
- 检查用户名和密码:确保您在客户端中输入的用户名和密码与在服务器上创建的完全一致,注意大小写和特殊字符。
- 检查用户的主机权限:确认您创建用户时使用的主机部分是否正确,如果您使用的是
'remote_user'@'%',则应允许任何IP连接,如果使用的是特定IP,请确保客户端的IP地址与之匹配,您可以在服务器上登录MySQL,执行SELECT Host, User FROM mysql.user;来查看用户的主机限制。 - 检查防火墙:确认服务器端的防火墙确实放行了3306端口,并且客户端所在的网络没有被其他网络设备(如公司防火墙)阻止。
:再次确认MySQL配置文件中的 bind-address已设置为0.0.0并且已重启服务。
问题2:如何修改MySQL的默认端口号以提高安全性?
解答:修改默认端口是一种通过“安全即 obscurity”来增加安全性的简单方法,操作步骤如下:
- 编辑配置文件:打开
/etc/my.cnf.d/mysql-server.cnf文件,在[mysqld]部分添加或修改port参数,将其改为3307:[mysqld] port = 3307 bind-address = 0.0.0.0
- 重启MySQL服务:保存文件后,重启服务以应用新端口:
sudo systemctl restart mysqld
- 更新防火墙规则:关闭旧的3306端口,并开放新的3307端口:
sudo firewall-cmd --permanent --remove-port=3306/tcp sudo firewall-cmd --permanent --add-port=3307/tcp sudo firewall-cmd --reload
- 更新客户端连接:之后,所有远程连接都需要指定新的端口号(在连接字符串中添加
Port=3307)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复