如何在linux服务器搭建mysql环境_mysql部署步骤详解

来源:这里教程网 时间:2026-02-28 20:45:11 作者:

直接在主流 Linux 服务器(如 CentOS 8+/Rocky 9、Ubuntu 22.04+)上部署 MySQL,

mysql-server
包已不再默认提供 —— 官方推荐用
mysql-community-server
(Oracle 官方源)或
mariadb-server
(系统默认替代),硬装旧版
mysql-server
会触发依赖冲突或仓库不可用错误。

确认系统自带的 MySQL 替代方案

现代发行版基本移除了 Oracle MySQL 官方包,改用 MariaDB 兼容实现:

Ubuntu/Debian:
apt list --installed | grep mysql
通常只返回
mariadb-client
mariadb-server
RHEL/CentOS/Rocky:
dnf module list mysql
显示的是
mariadb
模块,
mysql
模块状态为
disabled
或不存在
运行
mysqld --version
很可能报错,因为真正服务名是
mysqld
(MariaDB)或未安装

装 Oracle MySQL 官方版(需手动加 repo)

若明确需要 Oracle MySQL(比如依赖

mysql_native_password
插件、特定复制特性),必须添加官方 YUM/APT 源:

下载对应平台的
mysql80-community-release
包(如
mysql80-community-release-el9-1.noarch.rpm
执行
sudo dnf install ./mysql80-community-release-el9-1.noarch.rpm
(RHEL 系)
禁用默认模块:
sudo dnf module reset mysql && sudo dnf module enable mysql:8.0
安装:
sudo dnf install mysql-community-server
启动前先初始化:
sudo mysqld --initialize --user=mysql
(日志里会输出临时 root 密码)

启动失败常见原因和修复

装完

mysql-community-server
systemctl start mysqld
报错,大概率是 SELinux 或目录权限问题:

Failed to start mysqld.service: Unit not found
→ 检查是否装的是
mysql-community-server
而非
mysql-server
,服务名始终是
mysqld
Can't find error-message file '/usr/share/mysql-8.0/english/errmsg.sys'
→ 缺少语言包,装
mysql-community-client-plugins
SELinux 拒绝访问
/var/lib/mysql
→ 临时关 SELinux 测试:
sudo setenforce 0
;长期方案是恢复上下文:
sudo restorecon -Rv /var/lib/mysql
端口被占用(
Address already in use
)→ 查
sudo ss -tlnp | grep :3306
,确认没其他
mysqld
mysqld_safe
进程残留

首次登录与安全加固

初始化后 root 密码在

/var/log/mysqld.log
里,用它登录后必须立刻改密并删匿名用户:

mysql -u root -p
# 输入临时密码后执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!';
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

别跳过

mysql_secure_installation
—— 它自动处理密码强度、远程 root、test 库等,但注意:该脚本在 MySQL 8.0+ 默认禁用
unix_socket
认证,如果之前用 socket 登录过,运行时会提示切换认证方式,选
y
即可。

真实部署中,最容易被忽略的是防火墙放行和 bind-address 配置:CentOS 的

firewalld
默认不放行 3306,Ubuntu 的
ufw
默认拒绝所有入站;而
my.cnf
里的
bind-address = 127.0.0.1
会彻底禁止远程连接,改
0.0.0.0
前务必配好用户权限和网络 ACL。

相关推荐