别再踩坑了!手把手教你用tar.xz包在CentOS 7上安装MySQL 8.0(含Mariadb冲突解决)

张开发
2026/4/21 17:14:55 15 分钟阅读
别再踩坑了!手把手教你用tar.xz包在CentOS 7上安装MySQL 8.0(含Mariadb冲突解决)
CentOS 7下MySQL 8.0的避坑安装指南从tar.xz包到稳定运行在Linux环境下部署MySQL数据库是开发者必备的基础技能之一。对于使用CentOS 7系统的用户来说通过官方tar.xz压缩包安装MySQL 8.0看似简单实则暗藏诸多陷阱。本文将带你避开这些常见陷阱完成一次顺畅的MySQL 8.0安装体验。1. 环境准备与依赖检查在开始安装前确保你的CentOS 7系统已经更新到最新状态。运行以下命令更新系统sudo yum update -y1.1 检查并移除MariadbCentOS 7默认安装了Mariadb这与MySQL会产生冲突。首先检查系统中是否已安装Mariadbrpm -qa | grep mariadb如果返回类似mariadb-libs-5.5.60-1.el7_5.x86_64的结果则需要彻底移除它sudo rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64注意使用--nodeps参数可以避免依赖检查导致的删除失败但请确保你的系统确实不需要这些包。1.2 安装必要依赖MySQL 8.0需要一些基础库支持特别是libaio库。安装这些依赖sudo yum install -y libaio numactl2. 下载与解压MySQL 8.02.1 获取MySQL 8.0 tar.xz包访问MySQL官方下载页面选择适合CentOS 7的版本。推荐使用wget直接下载wget https://cdn.mysql.com//archives/mysql-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz2.2 创建专用目录并解压为MySQL创建专用目录是个好习惯这有助于后续管理sudo mkdir /usr/local/mysql sudo tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql --strip-components1这里使用了--strip-components1参数可以自动去掉压缩包中的一级目录结构。3. 系统配置与权限设置3.1 创建MySQL用户和组为MySQL创建专用用户和组提高安全性sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql3.2 设置目录权限确保MySQL用户对安装目录有适当的权限sudo chown -R mysql:mysql /usr/local/mysql sudo chmod -R 750 /usr/local/mysql4. 初始化MySQL数据库4.1 初始化数据目录首先创建一个数据存储目录sudo mkdir -p /var/lib/mysql sudo chown mysql:mysql /var/lib/mysql然后进行数据库初始化sudo /usr/local/mysql/bin/mysqld --initialize --usermysql --basedir/usr/local/mysql --datadir/var/lib/mysql初始化完成后控制台会显示临时root密码类似[Note] [MY-010454] [Server] A temporary password is generated for rootlocalhost: 3e!qWt1Lz8*p重要务必记下这个临时密码首次登录MySQL时需要它。4.2 常见初始化问题解决如果遇到libaio.so.1缺失错误说明libaio库未正确安装mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory解决方法是确保libaio已安装sudo yum install -y libaio5. 配置MySQL服务5.1 创建配置文件MySQL默认会读取/etc/my.cnf配置文件。创建一个基本配置sudo tee /etc/my.cnf EOF [mysqld] basedir/usr/local/mysql datadir/var/lib/mysql socket/var/lib/mysql/mysql.sock [mysql] socket/var/lib/mysql/mysql.sock [client] socket/var/lib/mysql/mysql.sock EOF5.2 设置系统服务将MySQL设置为系统服务方便管理sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld sudo chmod x /etc/init.d/mysqld sudo systemctl enable mysqld启动MySQL服务sudo systemctl start mysqld检查服务状态sudo systemctl status mysqld6. 安全设置与密码修改6.1 首次登录MySQL使用初始化时获得的临时密码登录/usr/local/mysql/bin/mysql -uroot -p输入临时密码后你会看到MySQL提示符。6.2 修改root密码在MySQL提示符下执行以下命令修改root密码ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES;6.3 基本安全设置MySQL提供了一个安全设置脚本sudo /usr/local/mysql/bin/mysql_secure_installation这个脚本会引导你完成一些基本的安全配置包括移除匿名用户禁止root远程登录移除测试数据库重新加载权限表7. 环境变量配置为了方便使用MySQL命令行工具建议将MySQL的bin目录添加到PATH环境变量中echo export PATH$PATH:/usr/local/mysql/bin | sudo tee -a /etc/profile source /etc/profile现在你可以直接使用mysql命令而不需要输入完整路径。8. 常见问题排查8.1 服务启动失败如果MySQL服务无法启动首先检查错误日志sudo tail -n 50 /var/lib/mysql/$(hostname).err常见问题包括权限问题确保/var/lib/mysql目录属于mysql用户端口冲突检查3306端口是否被占用内存不足MySQL 8.0需要较多内存小内存机器可能需要调整配置8.2 连接问题如果无法连接到MySQL服务器检查MySQL服务是否正在运行防火墙是否阻止了3306端口是否配置了正确的socket文件路径8.3 性能调优对于生产环境你可能需要调整一些MySQL参数。以下是一些基本建议参数建议值说明innodb_buffer_pool_size系统内存的50-70%InnoDB缓冲池大小max_connections100-300最大连接数innodb_log_file_size256M-1GInnoDB日志文件大小query_cache_size0MySQL 8.0已移除查询缓存这些参数可以在/etc/my.cnf文件的[mysqld]部分设置。修改配置后需要重启MySQL服务生效。9. 日常维护建议保持MySQL健康运行需要定期维护定期备份使用mysqldump或物理备份工具监控性能使用SHOW STATUS和SHOW PROCESSLIST命令优化表定期对频繁修改的表运行OPTIMIZE TABLE更新软件关注MySQL的安全更新对于备份一个简单的mysqldump命令示例/usr/local/mysql/bin/mysqldump -u root -p --all-databases full_backup.sql10. 进阶配置当你熟悉了基本操作后可能需要考虑以下进阶配置设置远程访问谨慎使用CREATE USER remote% IDENTIFIED BY 密码; GRANT ALL PRIVILEGES ON *.* TO remote%; FLUSH PRIVILEGES;配置复制设置主从复制提高可用性启用二进制日志用于时间点恢复和复制调整字符集确保使用utf8mb4以支持完整Unicode记住每次修改配置后都需要权衡安全性和功能性。在生产环境中任何变更都应该先在测试环境验证。

更多文章