
作为后端开发或数据库学习的起点,MySQL 环境搭建往往是第一道坎。不同 Linux 发行版(如 CentOS 7、Ubuntu)的安装路径差异较大,加之系统预装的 MariaDB 干扰、密码策略限制及编码问题,新手容易踩坑。本文以资深工程师的视角,拆解 CentOS 7 和 Ubuntu 下的完整部署流程,命令可直接复制,重点解决配置冲突与优化问题。
前置准备:处理 MariaDB 冲突
MySQL 被 Oracle 收购后,CentOS 7 和 Ubuntu 常默认预装 MariaDB。虽然语法兼容,但底层实现不同,会与官方 MySQL 产生端口和配置文件冲突。因此,安装前彻底卸载 MariaDB 是成功的关键。
建议全程使用 root 用户操作(普通用户需加 sudo),初期学习阶段直接用 root 管理更便捷,熟悉后再创建普通用户。
CentOS 7 系统下 MySQL 完整安装配置
本次演示基于 MySQL 5.7 版本(兼容性强),通过官方 YUM 源安装。流程涵盖:卸载冲突环境→配置 YUM 源→安装服务→初始化→优化设置。
1. 卸载系统自带 MariaDB / 旧版 MySQL
首先检查并停止正在运行的 MariaDB 进程,避免卸载时资源占用报错:
# 检查 MariaDB 进程
ps ajx | grep mariadb
# 停止服务
systemctl stop mariadb.service
# 再次确认无相关进程
ps ajx | grep mariadb
接着查询并卸载相关安装包。若有多个包,建议使用通配符批量清理:
# 查询已安装的包
rpm -qa | grep mariadb
rpm -qa | grep mysql
# 卸载 MariaDB
sudo yum remove mariadb* mysql* -y
注意: 卸载前建议备份配置文件和数据目录,防止误删重要内容:
cp /etc/my.cnf /etc/my.cnf.bak
cp -r /var/lib/mysql /var/lib/mysql.bak
2. 配置 MySQL 官方 YUM 源
CentOS 7 默认源不含 MySQL 官方包,需手动添加。下载与系统版本匹配的 YUM 源包至关重要。
# 查看系统版本
cat /etc/redhat-release
# 输出示例:CentOS Linux release 7.8.2003 (Core)
# 下载 MySQL 5.7 YUM 源包
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
# 安装 YUM 源
sudo rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
安装后会在 /etc/yum.repos.d/ 生成相关 repo 文件,验证如下:
ls /etc/yum.repos.d/ | grep mysql
yum list | grep mysql
若输出包含 mysql-community-server,说明源配置成功。
3. 安装 MySQL 服务
通过 YUM 安装服务端和客户端,-y 参数自动确认选项:
sudo yum install -y mysql-community-server
常见问题: 安装时若提示 GPG Keys 过期,需导入最新官方秘钥后重试。
4. 启动服务与验证状态
# 启动服务
systemctl start mysqld.service
# 设置开机自启
systemctl enable mysqld
# 重载配置
systemctl daemon-reload
# 验证进程
ps axj | grep mysqld
出现 /usr/sbin/mysqld 进程即表示启动成功。
5. 登录 MySQL 并修改初始密码
MySQL 5.7 安装后会生成临时 root 密码,位于 /var/log/mysqld.log。提取密码并登录:
# 提取临时密码
sudo grep 'temporary password' /var/log/mysqld.log
# 登录
mysql -uroot -p
密码策略调整: 5.7 默认开启强密码验证(含数字、符号、大小写,长度≥8)。若需简化设置,可先关闭策略:
-- 关闭密码强度验证
set global validate_password_policy=0;
-- 设置最小长度为 1 位
set global validate_password_length=1;
-- 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
-- 刷新权限
FLUSH PRIVILEGES;
若未找到临时密码,可直接回车登录;若登录失败,可通过修改配置文件跳过权限验证(skip-grant-tables)重置密码,记得重置后删除该配置并重启服务以恢复安全机制。
6. 核心配置优化
默认配置存在中文乱码风险,需修改 /etc/my.cnf 启用 UTF-8 编码和 InnoDB 引擎:
[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8mb4
default-storage-engine=innodb
# innodb_buffer_pool_size = 128M
修改后重启服务生效:systemctl restart mysqld.service。
7. 常见问题排查
- 无法输入中文: 检查终端 LANG 环境变量是否为
en_US.utf8,必要时修改/etc/profile。 - 服务启动失败: 查看错误日志
tail -100 /var/log/mysqld.log,排查端口占用或权限问题。
Ubuntu 系统下 MySQL 完整安装配置
Ubuntu(以 20.04/22.04 为例)使用 apt 包管理器,默认预装 MariaDB 的处理方式更简单。本次安装 MySQL 8.0。
1. 卸载 MariaDB
sudo systemctl stop mariadb
sudo apt remove mariadb-server mariadb-client mariadb-common -y
sudo apt autoremove -y
sudo apt clean
2. 更新源并安装
sudo apt update && sudo apt upgrade -y
sudo apt install mysql-server -y
Ubuntu 安装过程中无需手动设密,会自动创建 root 用户并使用 auth_socket 认证(本地免密登录)。
3. 验证与服务管理
sudo systemctl status mysql
sudo systemctl enable mysql
显示 active (running) 即成功。
4. 修改认证方式与密码
Ubuntu 默认不允许远程密码登录,需修改为 mysql_native_password:
sudo mysql -uroot
进入 SQL 交互界面执行:
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
FLUSH PRIVILEGES;
exit;
之后即可通过 mysql -uroot -p 正常登录。
5. 编码与核心配置
编辑 /etc/mysql/mysql.conf.d/mysqld.cnf,在 [mysqld] 节点添加:
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-storage-engine = InnoDB
port = 3306
# bind-address = 127.0.0.1
同时编辑 /etc/mysql/conf.d/mysql.cnf 设置客户端编码:
[mysql]
default-character-set = utf8mb4
重启服务并验证:
sudo systemctl restart mysql
SHOW VARIABLES LIKE '%character%';
6. 开启远程访问(可选)
若需从其他机器连接,需授权 root 远程访问并开放防火墙:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的新密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
sudo ufw allow 3306/tcp
sudo ufw reload
至此,CentOS 与 Ubuntu 的 MySQL 环境均已就绪,后续可根据业务需求进行用户管理与性能调优。

