使用 GLIBC 安装 MySQL(版本 5.6.35,适配 CentOS 7.9 64 位)完整步骤

背景介绍:为什么选择手动安装 GLIBC 版 MySQL?

在 CentOS 系统中,通过 YUM 安装 MySQL 虽然便捷,但存在版本锁定(如默认安装 MySQL 8.0 或 MariaDB)、配置固化等问题。对于需要特定版本(如 MySQL 5.6)、自定义安装路径或精细控制配置的场景,手动下载 GLIBC 压缩包安装是更灵活的选择:

  • 可自由选择 MySQL 版本(适配老旧业务系统兼容性);
  • 数据目录与安装目录分离,便于备份和迁移;
  • 完全自定义配置参数,针对服务器硬件优化性能;
  • 无依赖冲突风险(避免 YUM 源版本不一致问题)。

本文从 “环境准备→官网下载→手动配置→服务运维” 全流程讲解,保留所有手动操作细节,适合需要深度掌控 MySQL 部署的运维人员。

核心关键词解释

  • GLIBC 版 MySQL:基于 GNU C 库编译的 MySQL 二进制包,无需编译源码,直接解压即可使用,适配 Linux 系统(区别于源码编译版或 RPM 包);
  • mysql_install_db:MySQL 初始化工具,用于生成系统数据库(如mysql库)、创建 root 账号和权限表,是手动安装的必需步骤;
  • mysqld_safe:MySQL 守护进程启动脚本,负责监控mysqld进程,崩溃时自动重启,提供日志管理功能;
  • systemd 服务:Linux 系统服务管理器,用于统一管理 MySQL 启停、开机自启和状态监控;
  • Socket 文件:MySQL 本地连接的 UNIX 域套接字文件,比 TCP 连接更高效,默认路径需与配置文件一致。

一、环境准备(基础依赖与用户配置)

1. 安装系统依赖库

GLIBC 版 MySQL 运行依赖libaio库(用于异步 I/O 操作),缺少会导致启动失败:

bash

# 以root用户执行,安装libaio及开发包(包含头文件)
yum install -y libaio libaio-devel

# 验证依赖是否安装成功(输出libaio-xxx即为成功)
rpm -qa | grep libaio

2. 创建 MySQL 专用用户和组

避免使用 root 用户运行 MySQL(降低权限泄露风险),创建独立的mysql用户:

bash

# 创建mysql组(-r表示系统组,不用于登录)
groupadd -r mysql

# 创建mysql用户(-r系统用户,-g归属mysql组,-s禁止登录,-d指定家目录)
useradd -r -g mysql -s /sbin/nologin -d /home/mysql mysql

# 验证用户创建结果(显示uid、gid信息)
id mysql

3. 创建核心目录(规范路径结构)

提前规划目录结构,避免后续权限混乱:

目录用途路径作用说明
安装目录/usr/local/mysql-glibc存放 MySQL 二进制文件、配置模板和工具
数据目录/data/mysql-glibc存放数据库文件(独立目录便于备份和扩容)
日志目录/var/log/mysql-glibc存放错误日志、慢查询日志(与系统日志分离)
PID 目录/var/run/mysql-glibc存放 MySQL 进程 PID 文件(便于系统管理)

bash

# 批量创建目录(-p自动创建父目录)
mkdir -p /usr/local/mysql-glibc \
         /data/mysql-glibc \
         /var/log/mysql-glibc \
         /var/run/mysql-glibc

# 设置目录权限(所有目录归属mysql用户,避免启动时权限不足)
chown -R mysql:mysql /usr/local/mysql-glibc
chown -R mysql:mysql /data/mysql-glibc
chown -R mysql:mysql /var/log/mysql-glibc
chown -R mysql:mysql /var/run/mysql-glibc

# 数据目录设置严格权限(仅mysql用户可读写,防止数据泄露)
chmod 700 /data/mysql-glibc
chmod 700 /var/log/mysql-glibc

二、手动访问官网下载 MySQL 5.6 GLIBC 压缩包

1. 访问 MySQL 官网下载页面

打开浏览器,进入 MySQL 归档版本下载页:MySQL 5.6 Archive Downloads筛选条件:

  • Product Version:选择5.6.35(或其他稳定版,如 5.6.51);
  • Operating System:选择Linux-GLIBC 2.5(适配 CentOS 7);
  • OS Version:选择x86_64(64 位系统,主流服务器架构)。

找到文件名类似mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz的压缩包,点击Download按钮。

2. 处理下载验证(跳过登录)

点击下载后,页面会提示 “登录 / 注册 Oracle 账号”,直接点击下方的No thanks, just start my download跳过,开始下载压缩包。

3. 上传压缩包到服务器

通过 FTP 工具(如 FileZilla)或scp命令,将压缩包上传到服务器的/tmp目录(临时目录,避免占用安装空间):

bash

# 本地终端执行(将本地文件上传到服务器)
scp ~/Downloads/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz root@你的服务器IP:/tmp

4. 验证压缩包完整性(可选)

计算压缩包 MD5 值,与官网提供的校验值对比,确保文件未损坏:

bash

cd /tmp
md5sum mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

三、解压压缩包到安装目录

bash

cd /tmp

# 解压压缩包(-z处理gzip格式,-x解压,-v显示过程,-f指定文件)
tar -zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

# 查看解压后的目录(生成mysql-5.6.35-linux-glibc2.5-x86_64目录)
ls -ld mysql-5.6.35-linux-glibc2.5-x86_64

# 将解压后的文件移动到安装目录(避免多一层目录)
mv mysql-5.6.35-linux-glibc2.5-x86_64/* /usr/local/mysql-glibc/

# 验证文件是否到位(检查核心二进制文件)
ls -l /usr/local/mysql-glibc/bin/ | grep -E "mysqld|mysqld_safe"
  • 输出类似-rwxr-xr-x 1 mysql mysql 78613510 Nov 28 2016 mysqld即为成功。

四、初始化 MySQL 数据目录(生成系统表)

GLIBC 版 MySQL 无默认数据文件,需通过mysql_install_db工具初始化(生成系统库和 root 账号):

bash

# 切换到mysql用户(必须用mysql用户初始化,否则数据文件权限错误)
su - mysql -s /bin/bash

# 执行初始化命令(参数必须完整,指定安装目录、数据目录和日志路径)
/usr/local/mysql-glibc/scripts/mysql_install_db \
  --basedir=/usr/local/mysql-glibc \
  --datadir=/data/mysql-glibc \
  --user=mysql \
  --log-error=/var/log/mysql-glibc/mysql-error.log

# 初始化成功标志:输出"Two all-privilege accounts were created"
# 退出mysql用户,回到root身份
exit

初始化失败排查

  • 提示 “mysql_install_db: command not found”:检查路径是否正确(确认/usr/local/mysql-glibc/scripts/下是否有该文件);
  • 提示 “error while loading shared libraries: libaio.so.1”:重新安装libaio-devel
  • 提示 “Cannot create directory '/data/mysql-glibc'”:检查目录权限(执行chown -R mysql:mysql /data/mysql-glibc)。

五、手动配置 MySQL 主配置文件(my.cnf)

创建/etc/my.cnf文件,指定核心路径和性能参数(覆盖默认配置):

bash

vim /etc/my.cnf

写入完整配置(根据服务器硬件调整参数,示例为 2GB 内存配置):

ini

[mysqld]
# 核心路径配置(必须与实际目录一致)
basedir = /usr/local/mysql-glibc        # 安装目录
datadir = /data/mysql-glibc             # 数据目录
socket = /var/run/mysql-glibc/mysql.sock  # Socket文件路径
pid-file = /var/run/mysql-glibc/mysql.pid  # PID文件路径
log-error = /var/log/mysql-glibc/mysql-error.log  # 错误日志路径

# 基础服务配置
port = 3306                              # 服务端口(默认3306,可修改避免冲突)
user = mysql                             # 运行用户(必须为mysql)
character-set-server = utf8              # 默认字符集(避免中文乱码)
skip-name-resolve                        # 禁用DNS解析(加快客户端连接)
lower_case_table_names = 1               # 表名不区分大小写(适配Windows迁移)

# 性能优化配置(2GB内存示例)
max_connections = 100                    # 最大连接数(避免连接耗尽)
innodb_buffer_pool_size = 512M           # InnoDB缓存(内存的50%-70%最佳)
query_cache_size = 64M                   # 查询缓存(小内存可设为32M)
tmp_table_size = 64M                     # 临时表大小(避免磁盘临时表)
max_allowed_packet = 64M                 # 最大数据包大小(支持大字段)

[mysql]
# 客户端配置(与服务端Socket路径一致)
default-character-set = utf8
socket = /var/run/mysql-glibc/mysql.sock

[mysqld_safe]
# 守护进程配置(与服务端日志、PID路径一致)
log-error = /var/log/mysql-glibc/mysql-error.log
pid-file = /var/run/mysql-glibc/mysql.pid

保存后设置配置文件权限:

bash

chmod 644 /etc/my.cnf  # 仅root可修改,其他用户只读
chown root:root /etc/my.cnf

六、修复 mysqld_safe 脚本硬编码路径(关键步骤)

GLIBC 版mysqld_safe脚本默认硬编码路径为/usr/local/mysql,需替换为实际安装目录:

bash

# 搜索脚本中的旧路径
grep -n "/usr/local/mysql" /usr/local/mysql-glibc/bin/mysqld_safe

# 全局替换旧路径为实际安装目录(/usr/local/mysql-glibc)
sed -i 's#/usr/local/mysql#/usr/local/mysql-glibc#g' /usr/local/mysql-glibc/bin/mysqld_safe

# 验证替换结果(输出为空则成功)
grep -n "/usr/local/mysql" /usr/local/mysql-glibc/bin/mysqld_safe

七、配置 systemd 服务(管理 MySQL 启停)

通过 systemd 统一管理 MySQL 服务(支持开机自启、状态监控):

bash

vim /usr/lib/systemd/system/mysql-glibc.service

写入服务配置:

ini

[Unit]
Description=MySQL 5.6 (GLIBC Install)  # 服务描述
After=network.target syslog.target     # 依赖网络和日志服务启动后再启动

[Service]
Type=simple                            # 启动类型(适配mysqld_safe前台运行)
User=mysql                             # 运行用户
Group=mysql                            # 运行组
PIDFile=/var/run/mysql-glibc/mysql.pid # PID文件路径

# 启动命令(调用mysqld_safe,参数与配置文件一致)
ExecStart=/usr/local/mysql-glibc/bin/mysqld_safe \
  --basedir=/usr/local/mysql-glibc \
  --datadir=/data/mysql-glibc \
  --pid-file=/var/run/mysql-glibc/mysql.pid \
  --log-error=/var/log/mysql-glibc/mysql-error.log

# 停止命令(通过mysqladmin优雅停止,避免数据损坏)
ExecStop=/usr/local/mysql-glibc/bin/mysqladmin \
  -u root \
  -S /var/run/mysql-glibc/mysql.sock \
  shutdown

# 重载配置(发送HUP信号)
ExecReload=/bin/kill -HUP $MAINPID

Restart=on-failure                     # 失败时自动重启
RestartSec=3                           # 重启间隔3秒

[Install]
WantedBy=multi-user.target             # 多用户模式下启动(开机自启)

重载 systemd 配置并验证:

bash

systemctl daemon-reload
systemctl list-unit-files | grep mysql-glibc  # 输出"loaded"即为成功

八、启动 MySQL 服务并验证完整性

1. 启动服务并查看状态

bash

systemctl start mysql-glibc
systemctl status mysql-glibc -l  # 显示"active (running)"即为成功

2. 解决启动超时问题

若提示 “Job for mysql-glibc.service failed because a timeout was exceeded”,但ps aux | grep mysqld能看到进程,执行以下命令:

bash

systemctl daemon-reexec  # 刷新systemd状态判断
systemctl start mysql-glibc
systemctl status mysql-glibc -l

3. 验证 MySQL 功能正常

(1)本地连接测试(初始化后 root 无密码)

bash

# 连接MySQL客户端(-S指定Socket路径,-p后直接回车)
/usr/local/mysql-glibc/bin/mysql -u root -S /var/run/mysql-glibc/mysql.sock -p

进入mysql>命令行后执行验证 SQL:

sql

-- 查看MySQL版本(确认与安装版本一致)
SELECT VERSION();

-- 查看系统数据库(确认初始化成功)
SHOW DATABASES;

-- 退出客户端
EXIT;
(2)设置 root 密码(安全必需)

bash

# 设置root密码(替换为实际强密码)
/usr/local/mysql-glibc/bin/mysqladmin \
  -u root \
  -S /var/run/mysql-glibc/mysql.sock \
  password 'YourStrongPassword@2024'

# 验证密码生效(连接时需输入新密码)
/usr/local/mysql-glibc/bin/mysql -u root -p -S /var/run/mysql-glibc/mysql.sock
(3)配置远程访问(可选)

默认 root 仅允许本地访问,如需远程连接,执行授权:

sql

-- 本地连接MySQL后执行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YourStrongPassword@2024' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

开放防火墙 3306 端口:

bash

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
(4)设置开机自启

bash

systemctl enable mysql-glibc
systemctl is-enabled mysql-glibc  # 输出"enabled"即为成功

九、日常维护操作(必备)

1. 服务启停与状态查看

bash

# 启动服务
systemctl start mysql-glibc

# 停止服务(优雅停止)
systemctl stop mysql-glibc

# 重启服务
systemctl restart mysql-glibc

# 查看状态
systemctl status mysql-glibc -l

# 查看日志(实时跟踪)
journalctl -u mysql-glibc -f

2. 数据备份(mysqldump 全量备份)

bash

# 创建备份目录
mkdir -p /data/mysql_backup

# 备份所有数据库(文件名含日期)
/usr/local/mysql-glibc/bin/mysqldump \
  -u root \
  -p \
  -S /var/run/mysql-glibc/mysql.sock \
  --all-databases \
  --single-transaction \  # 避免锁表(InnoDB适用)
  --master-data=2 \       # 记录二进制日志位置
  > /data/mysql_backup/$(date +%Y%m%d)_all_db.sql

3. 日志管理(定期清理)

bash

# 查看日志大小
du -sh /var/log/mysql-glibc/mysql-error.log

# 清空日志(测试环境)
> /var/log/mysql-glibc/mysql-error.log

# 生产环境:配置logrotate自动轮转
yum install -y logrotate
vim /etc/logrotate.d/mysql-glibc

写入 logrotate 配置:

ini

/var/log/mysql-glibc/mysql-error.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 640 mysql mysql
}

十、常见问题排查(汇总)

问题现象可能原因解决方案
启动提示 “The file /usr/local/mysql/bin/mysqld does not exist”mysqld_safe 脚本硬编码旧路径重新执行步骤六,替换路径为/usr/local/mysql-glibc
启动提示 “ERROR! The server quit without updating PID file”数据目录权限错误 / 未初始化 / 端口被占用1. chown -R mysql:mysql /data/mysql-glibc;2. 重新初始化;3. `netstat -tulpngrep 3306` 查看占用进程
连接提示 “Can't connect to local MySQL server through socket”Socket 文件不存在 / 路径不匹配1. 启动服务;2. 确认配置文件与连接命令的 Socket 路径一致
远程连接提示 “Access denied”未授权远程访问 / 密码错误 / 防火墙未开放1. 授权root@%;2. 重置密码;3. 开放 3306 端口

十一、附加问题解答

1. 如何查看 MySQL 的版本信息?

bash

# 方法1:通过mysql客户端查看
/usr/local/mysql-glibc/bin/mysql -u root -p -e "SELECT VERSION();"

# 方法2:通过mysqld二进制文件查看
/usr/local/mysql-glibc/bin/mysqld --version

# 方法3:查看进程信息
ps aux | grep mysqld | grep -v grep

2. 如何修改 root 用户的密码?

bash

# 方法1:使用mysqladmin(已知旧密码)
/usr/local/mysql-glibc/bin/mysqladmin -u root -p旧密码 password '新密码'

# 方法2:MySQL客户端修改(忘记密码时需跳过权限表启动)
# 1. 停止MySQL服务
systemctl stop mysql-glibc

# 2. 跳过权限表启动
/usr/local/mysql-glibc/bin/mysqld_safe --skip-grant-tables &

# 3. 无密码登录
/usr/local/mysql-glibc/bin/mysql -u root

# 4. 修改密码
USE mysql;
UPDATE user SET password=PASSWORD('新密码') WHERE user='root';
FLUSH PRIVILEGES;
EXIT;

# 5. 重启服务
systemctl restart mysql-glibc

3. 如何备份和恢复 MySQL 数据库?

备份(全量):

bash

/usr/local/mysql-glibc/bin/mysqldump -u root -p --all-databases > backup.sql
恢复:

bash

# 方法1:通过mysql客户端恢复
/usr/local/mysql-glibc/bin/mysql -u root -p < backup.sql

# 方法2:指定数据库恢复
/usr/local/mysql-glibc/bin/mysql -u root -p 目标数据库名 < backup.sql

总结

手动安装 GLIBC 版 MySQL 的核心步骤为:环境准备→官网下载→解压安装→初始化数据→配置文件→修复脚本→systemd 管理→验证功能。关键注意事项包括:

  1. 数据目录与安装目录分离,便于维护;
  2. 修复 mysqld_safe 脚本路径,避免启动失败;
  3. 严格控制目录权限,使用 mysql 用户运行服务;
  4. 初始化后立即设置 root 密码,保障安全。

通过本文步骤,可完成 MySQL 5.6 的生产级部署,兼顾灵活性和稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值