深色模式
MySQL 安装部署
摘要:本文给出 MySQL 8.0 的两种主流安装方式——yum/apt 仓库安装(推荐新手)与二进制包安装(多实例、自定义目录场景),并包含初始化、安全加固与 systemd 托管步骤。
适用环境
bash
# 确认系统与架构
cat /etc/os-release | grep -E '^(ID|VERSION_ID)='
uname -m # x86_64 / aarch64
# 卸载可能冲突的 mariadb
rpm -qa | grep -i mariadb
sudo yum remove -y mariadb-libs # RHEL 系;Debian 系用 apt remove1
2
3
4
5
6
7
2
3
4
5
6
7
操作步骤
1. 方式 A:yum/apt 仓库安装(推荐)
bash
# RHEL/Rocky/Alma 9:配置官方 yum 仓库后安装
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo yum install -y mysql-community-server
# Debian/Ubuntu
sudo apt-get update && sudo apt-get install -y mysql-server1
2
3
4
5
6
2
3
4
5
6
2. 方式 B:二进制包安装(自定义目录)
bash
cd /usr/local
sudo tar -xf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
sudo ln -s mysql-8.0.36-linux-glibc2.28-x86_64 mysql
sudo groupadd mysql && sudo useradd -r -g mysql -s /bin/false mysql
sudo mkdir -p /data/mysql/{data,log,tmp}
sudo chown -R mysql:mysql /data/mysql1
2
3
4
5
6
7
2
3
4
5
6
7
3. 准备配置文件(/etc/my.cnf,两种方式通用核心项)
ini
[mysqld]
user=mysql
datadir=/data/mysql/data
socket=/data/mysql/tmp/mysql.sock
port=3306
character-set-server=utf8mb4
default-storage-engine=InnoDB
log-error=/data/mysql/log/mysqld.err
pid-file=/data/mysql/tmp/mysqld.pid1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
4. 初始化数据目录
bash
# 二进制方式(会输出 root 临时密码,务必保存)
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql \
--datadir=/data/mysql/data --basedir=/usr/local/mysql
# yum 方式首次启动会自动初始化,临时密码在日志里
sudo grep 'temporary password' /var/log/mysqld.log1
2
3
4
5
6
2
3
4
5
6
危险
--initialize 只对空目录执行;对已有数据目录执行会直接破坏现有数据。升级场景请走官方升级流程,勿重新初始化。
5. 配置 systemd 并启动
bash
# yum 安装
sudo systemctl enable --now mysqld
# 二进制安装可复用 yum 包的服务文件,或自建 /etc/systemd/system/mysqld.service
sudo systemctl daemon-reload
sudo systemctl enable --now mysqld
sudo systemctl status mysqld1
2
3
4
5
6
7
2
3
4
5
6
7
6. 首次登录与安全加固
bash
mysql -uroot -p # 输入临时密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass!2026';
# 可选:交互式安全向导(删匿名账号、禁 root 远程、删 test 库)
mysql_secure_installation1
2
3
4
5
2
3
4
5
验证
bash
mysqladmin -uroot -p ping # mysqld is alive
mysql -uroot -p -e "SELECT VERSION();"
sudo systemctl is-enabled mysqld # enabled1
2
3
2
3
常见坑
WARNING
初始化失败多半是 datadir 非空或权限不对:确认 /data/mysql/data 为空且属主是 mysql。
WARNING
SELinux 开启时自定义目录(如 /data)会被拒绝访问,用 setenforce 0 临时验证,再用 semanage fcontext 永久放通,不要长期关闭 SELinux。
DANGER
不要把 root@% 开放给业务使用,也不要把密码写进命令行历史;用 mysql_config_editor 或配置文件保存凭据。