在CentOS系统中安装MySQL,除了使用yum等包管理器外,还有一种更为灵活和可控的方式——安装解压版(也称为二进制通用版),这种方式允许用户自由选择MySQL版本,自定义安装路径和配置,对于需要进行特定环境配置或版本隔离的开发者与系统管理员来说,具有不可替代的优势,本文将详细介绍在CentOS上安装MySQL解压版的完整流程。

前期准备工作
在开始安装之前,确保系统环境干净,并做好必要的准备工作。
-
检查与卸载旧版本:为避免端口冲突和文件覆盖,首先需要检查并卸载系统中原有的MySQL或MariaDB。
rpm -qa | grep -i mysql rpm -qa | grep -i mariadb
如果查询到相关包,请使用
yum remove或rpm -e命令进行卸载。 -
创建专用用户:出于安全考虑,不建议使用root用户运行MySQL服务,我们创建一个名为
mysql的系统用户和用户组。groupadd mysql useradd -r -g mysql -s /bin/false mysql
-r参数表示创建系统用户,-s /bin/false禁止该用户登录shell。 -
安装依赖:MySQL解压版依赖于
libaio库,请确保已安装。yum install -y libaio
安装与配置步骤
下载并解压MySQL
访问MySQL官方网站的下载页面,选择“Linux - Generic (glibc 2.12) (x86, 64-bit)”版本,复制其链接地址,在服务器上使用wget下载。
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz
下载完成后,将其解压到/usr/local目录下,并重命名为mysql,这是一个约定俗成的标准路径。
tar -xvf mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ cd /usr/local/ mv mysql-8.0.35-linux-glibc2.12-x86_64 mysql
创建数据目录并授权
在MySQL安装目录下创建一个用于存储数据库数据的目录,并将该目录的所有权赋予之前创建的mysql用户。

mkdir /usr/local/mysql/data chown -R mysql:mysql /usr/local/mysql/
初始化数据库
这是最关键的一步,执行初始化命令,MySQL会创建系统数据库及其相关文件。
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
执行完毕后,命令行末尾会输出一个临时的root密码,[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: _a1b2c3d!E,请务必记录下这个密码,首次登录时需要使用。
配置my.cnf文件
创建MySQL的配置文件/etc/my.cnf,这是MySQL服务启动时读取的核心配置。
vim /etc/my.cnf
填入以下基本配置:
[mysqld] basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 socket = /tmp/mysql.sock character-set-server=utf8mb4 default-storage-engine=INNODB [mysql] default-character-set=utf8mb4 [client] default-character-set=utf8mb4 socket = /tmp/mysql.sock
配置系统服务并启动
为了方便管理,我们将MySQL配置为systemd服务,创建服务文件:
vim /etc/systemd/system/mysql.service
[Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000
重新加载systemd配置,启动MySQL服务,并设置为开机自启。
systemctl daemon-reload systemctl start mysql systemctl enable mysql
登录并修改密码
现在可以使用之前记录的临时密码登录MySQL了。
/usr/local/mysql/bin/mysql -u root -p
输入临时密码登录成功后,立即修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword';
为了方便后续使用,可以将MySQL的bin目录添加到系统环境变量中:

echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile source /etc/profile
至此,MySQL解压版已在CentOS上成功安装、配置并运行。
相关问答FAQs
Q1: 如果忘记了初始化时生成的临时root密码,该怎么办?
A1: 不要慌张,可以通过“跳过权限验证”模式来重置密码,停止MySQL服务:systemctl stop mysql,手动启动mysqld,并添加--skip-grant-tables参数:/usr/local/mysql/bin/mysqld --skip-grant-tables --user=mysql &,无需密码即可登录:mysql -u root,登录后,执行以下命令刷新权限并重置密码:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
退出MySQL,正常启动服务即可:systemctl start mysql。
Q2: 如何将手动安装的MySQL设置为开机自启?
A2: 我们在第5步“配置系统服务并启动”中已经完成了这个操作,核心是创建了一个mysql.service的systemd服务单元文件,创建好这个文件后,执行systemctl daemon-reload让systemd识别新服务,然后使用systemctl enable mysql命令即可将MySQL服务添加到开机启动项中,这样,每次系统重启后,MySQL服务都会自动运行。