linux系统中YUM安装MySQL数据库详细教程

YUM 安装 MySQL 是最便捷、最符合 Linux 系统规范 的方式(适配 CentOS/RHEL 7/8/9,支持 x86_64/aarch64 架构),核心优势是 "自动处理依赖 + 系统级服务管理 + 一键升级"。以下是分阶段、带详细解释的完整步骤,覆盖 "环境准备→源配置→安装→初始化→自定义配置→远程访问" 全流程:

一、前置准备(必做:解决冲突 / 依赖)

1. 清理旧版本残留(避免安装冲突)

系统默认可能预装 MariaDB(MySQL 分支),需先卸载,否则会屏蔽 MySQL 包:

复制代码
# 1. 卸载已安装的MySQL/MariaDB
yum remove -y mysql* mariadb*

# 2. 清理残留配置/数据文件
rm -rf /etc/my.cnf /var/lib/mysql /var/log/mysqld.log

# 3. 清理YUM缓存(避免源缓存干扰)
yum clean all && yum makecache
2. 安装基础依赖(避免安装 / 启动失败)
复制代码
# CentOS/RHEL系通用依赖
yum install -y wget libaio-devel numactl-devel perl net-tools policycoreutils-python-utils
  • 依赖作用:
    • libaio-devel:InnoDB 引擎异步 IO 依赖;
    • numactl-devel:多 CPU 架构性能优化;
    • policycoreutils-python-utils:SELinux 上下文配置工具。
3. 禁用 MariaDB 模块(CentOS 7 + 核心步骤)

CentOS 7/8/9 默认启用mariadb模块,会直接屏蔽 MySQL 官方源的包,必须禁用:

复制代码
# 1. 查看模块状态(确认mariadb模块存在)
yum module list mariadb

# 2. 禁用mariadb模块(永久生效)
yum module disable -y mariadb

# 3. 重新生成YUM缓存
yum clean all && yum makecache

二、添加 MySQL 官方 YUM 源(适配架构 / 系统版本)

MySQL 官方为不同架构 / 系统版本提供专属 YUM 源,需选择对应版本(核心!避免 "无匹配包")。

1. 选择对应系统 / 架构的源包
系统版本 架构 源包下载命令
CentOS 7 x86_64 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
CentOS 7 aarch64 同上(下载后需手动修改源为 aarch64)
CentOS 8/9 x86_64/aarch64 wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm(CentOS9 替换为el9
复制代码
# 示例:CentOS 7 aarch64/x86_64通用下载
cd /tmp
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
2. 安装源包并配置架构(aarch64 必做)
复制代码
# 1. 安装源包(将MySQL源添加到/etc/yum.repos.d/)
rpm -ivh mysql80-community-release-el7-3.noarch.rpm

# 2. 编辑源配置文件(仅aarch64架构需改,x86_64可跳过)
vi /etc/yum.repos.d/mysql-community.repo
  • 找到[mysql80-community]段,修改baseurl为对应架构的源(核心!):

    复制代码
    [mysql80-community]
    name=MySQL 8.0 Community Server
    # aarch64架构源
    baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el7/aarch64/
    # x86_64架构源(注释掉aarch64,启用此行)
    # baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el7/x86_64/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
3. 导入 GPG 密钥(避免安装时验证失败)
复制代码
# 下载并导入MySQL官方GPG密钥
wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022

三、YUM 安装 MySQL(核心步骤)

1. 确认源生效(可选,验证架构匹配)
复制代码
# 查看可用的MySQL包(显示对应架构则正常)
yum list | grep mysql-community-server | grep -E 'x86_64|aarch64'
2. 安装 MySQL 服务器 + 客户端
复制代码
# 安装核心包(server=服务端,client=客户端)
yum install -y mysql-community-server mysql-community-client
  • 安装成功标志:无ERROR报错,最后输出Complete!

四、初始化与基础配置(必做)

YUM 安装的 MySQL 会自动完成以下操作:

  • 创建mysql用户 / 组(无需手动创建);
  • 生成默认配置文件/etc/my.cnf
  • 初始化数据目录/var/lib/mysql(默认);
  • 生成临时密码并写入/var/log/mysqld.log
1. 启动 MySQL 服务并设置开机自启
复制代码
# 1. 启动服务
systemctl start mysqld

# 2. 设置开机自启(重启服务器后自动启动)
systemctl enable mysqld

# 3. 检查服务状态(显示Active: running则成功)
systemctl status mysqld
2. 获取初始化临时密码

MySQL 8.0 安装后会生成临时密码(仅用于首次登录),需从日志中提取:

复制代码
# 提取临时密码(最后一行的"root@localhost:"后即为密码)
TEMP_PWD=$(grep "temporary password" /var/log/mysqld.log | awk '{print $NF}')
echo "MySQL临时密码:$TEMP_PWD"
  • 示例输出:MySQL临时密码:abc123!@#(包含大小写 / 数字 / 特殊字符,符合密码策略)。
3. 重置初始密码(临时密码已过期)

临时密码仅允许 "修改密码" 操作,需重置为自定义密码:

复制代码
# 登录并重置密码(替换为你的临时密码和新密码)
mysql -uroot -p"$TEMP_PWD" --connect-expired-password << EOF
# 新密码需符合策略:至少8位,含大小写+数字+特殊字符(示例:MySQL@8888)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySQL@8888';
# 刷新权限(确保修改生效)
FLUSH PRIVILEGES;
EOF

五、自定义配置(可选:修改数据目录 / 字符集等)

YUM 安装的默认配置(/etc/my.cnf)满足基础需求,若需自定义(如数据目录改/data/mysql),按以下步骤操作:

1. 准备自定义目录并赋权
复制代码
# 1. 创建自定义数据目录(示例:/data/mysql)
mkdir -p /data/mysql

# 2. 赋予mysql用户权限(必须!)
chown -R mysql:mysql /data/mysql
chmod -R 755 /data/mysql
2. 修改/etc/my.cnf配置文件
复制代码
vi /etc/my.cnf
  • 替换为以下配置(核心:修改 datadir 为自定义路径):

    复制代码
    [mysqld]
    # 自定义数据目录(替换默认的/var/lib/mysql)
    datadir=/data/mysql
    # Socket文件路径(必须和datadir同目录)
    socket=/data/mysql/mysql.sock
    # 运行用户(YUM安装已自动创建mysql用户)
    user=mysql
    # 端口
    port=3306
    # 错误日志(保留默认路径,也可改到/data/mysql/log)
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    # 字符集(避免中文乱码)
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    # 禁用符号链接(安全)
    symbolic-links=0
    
    [client]
    # 客户端socket路径(和mysqld一致)
    socket=/data/mysql/mysql.sock
    default-character-set=utf8mb4
3. 迁移默认数据并重启服务
复制代码
# 1. 停止MySQL服务
systemctl stop mysqld

# 2. 迁移默认数据到自定义目录
cp -rp /var/lib/mysql/* /data/mysql/

# 3. 重置目录权限(确保mysql用户可读写)
chown -R mysql:mysql /data/mysql

# 4. 配置SELinux上下文(避免拦截)
chcon -R -t mysqld_db_t /data/mysql
semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
restorecon -R /data/mysql

# 5. 重启服务并验证
systemctl start mysqld
# 验证数据目录是否生效
mysql -uroot -p"MySQL@8888" -e "show variables like 'datadir';"

六、配置远程访问(可选:Navicat / 客户端连接)

1. 允许 root 用户远程连接
复制代码
mysql -uroot -p"MySQL@8888" << EOF
# 将root的访问主机改为"%"(任意远程主机)
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
# 解决Navicat兼容问题(MySQL 8.0专属)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MySQL@8888';
FLUSH PRIVILEGES;
EOF
2. 开放防火墙 3306 端口
复制代码
# 1. 临时开放(重启防火墙失效)
firewall-cmd --add-port=3306/tcp --permanent

# 2. 重启防火墙生效
firewall-cmd --reload

# 3. 验证端口是否开放
firewall-cmd --query-port=3306/tcp

七、验证安装成功

复制代码
# 1. 验证MySQL版本(显示8.0.x+对应架构)
mysql --version

# 2. 验证服务状态(Active: running)
systemctl status mysqld

# 3. 验证数据目录(输出/data/mysql则正确)
mysql -uroot -p"MySQL@8888" -e "show variables like 'datadir';"

# 4. 验证远程连接(本地测试)
mysql -uroot -p"MySQL@8888" -h 服务器IP -P 3306

八、YUM 安装的核心优势 & 常见问题

1. YUM 安装的核心优势
  • 自动处理依赖:无需手动安装 libaio、openssl 等依赖;
  • 系统级服务管理 :直接用systemctl启停 / 开机自启,符合 Linux 规范;
  • 一键升级 :后续升级仅需yum update mysql-community-server
  • 自动创建用户 / 目录 :无需手动创建mysql用户、/var/lib/mysql目录。
2. 常见问题排查
问题现象 原因 & 解决方法
安装提示 "无匹配包" mariadb 模块未禁用 → 执行yum module disable -y mariadb+ 清理缓存
启动失败 "Permission denied" 数据目录权限不是 mysql → 执行chown -R mysql:mysql /data/mysql
远程连接超时 防火墙未开放 3306 → 执行firewall-cmd --add-port=3306/tcp --permanent
Navicat 提示 "认证插件不支持" MySQL 8.0 默认用 caching_sha2_password → 执行ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
临时密码找不到 服务未启动 → 先执行systemctl start mysqld,再查/var/log/mysqld.log

总结

YUM 安装 MySQL 的核心逻辑是 "官方源适配→模块化冲突解决→自动安装→系统级配置",步骤比二进制包更简洁,且无需手动管理程序目录、依赖、服务文件,是生产环境 / 快速部署的首选。

相关推荐
渡我白衣14 小时前
Reactor与多Reactor设计:epoll实战
linux·网络·人工智能·网络协议·tcp/ip·信息与通信·linux网络编程
残风也想永存14 小时前
【MySQL】事务管理
数据库·mysql
wengad14 小时前
mongoDB安全漏洞CVE-2025-14847修复方案
数据库·mongodb
阿豪学编程14 小时前
【Linux】线程基础:控制逻辑与封装指南
linux·运维·服务器
默默在路上14 小时前
M芯片使用VMware Fusion安装CentOS Stream 9教程
linux·macos·centos
kuankeTech14 小时前
海南封关供应链重构:外贸ERP如何成为企业的“数字海关”
大数据·数据库·人工智能·重构·软件开发·erp
爱敲点代码的小哥14 小时前
【无标题】
linux·windows·microsoft
ChrylZzz14 小时前
oracle读写分离搭建需要几台服务器
数据库
ZeroNews内网穿透14 小时前
轻量级自托管Git服务:Gitea私有化部署与公网访问
服务器·网络·数据库·git·gitea