悠悠楠杉
Linux系统下MySQL5.7与8.0双版本安装全指南
Linux系统下MySQL 5.7与8.0双版本安装全指南
关键词:Linux安装MySQL、MySQL 5.7配置、MySQL 8.0新特性、数据库版本对比、YUM/APT源配置
描述:本文详细讲解在Linux系统中安装MySQL 5.7和8.0双版本的完整流程,包含源配置、安装步骤、初始化设置及版本特性对比,适用于CentOS和Ubuntu系统。
一、版本选择与准备工作
作为最流行的开源关系型数据库,MySQL 5.7与8.0在性能、安全性和功能上存在显著差异。5.7版本以稳定性著称,而8.0则带来了窗口函数、CTE语法等重大更新。在安装前需确认:
系统兼容性
- CentOS 7+/Ubuntu 18.04+支持两种版本
- 内存建议2GB以上(8.0对资源要求更高)
存储规划
bash
查看磁盘空间(建议预留10GB以上)
df -h /var/lib/mysql
二、MySQL 5.7安装详解
2.1 配置官方YUM/APT源
bash
CentOS
sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
Ubuntu
wget https://dev.mysql.com/get/mysql-apt-config0.8.12-1all.deb
sudo dpkg -i mysql-apt-config0.8.12-1all.deb
2.2 安装核心组件
bash
CentOS
sudo yum install mysql-community-server
Ubuntu
sudo apt update && sudo apt install mysql-server-5.7
2.3 初始化安全设置
bash
启动服务
sudo systemctl start mysqld
获取临时密码
grep 'temporary password' /var/log/mysqld.log
运行安全向导
mysqlsecureinstallation
三、MySQL 8.0安装实战
3.1 添加新版仓库
bash
CentOS 8直接使用默认仓库
CentOS 7需添加新repo:
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
3.2 安装并验证
bash
sudo yum --enablerepo=mysql80-community install mysql-community-server
验证版本
mysql -V
3.3 密码强度策略调整
8.0默认启用更严格的密码策略:
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass@123';
四、双版本共存方案
4.1 端口冲突解决
通过修改配置文件实现双实例运行:ini
/etc/my.cnf 添加:
[mysqld5.7]
port=3307
socket=/var/lib/mysql/mysql57.sock
[mysqld8.0]
port=3308
socket=/var/lib/mysql/mysql80.sock
4.2 服务管理技巧
bash
分别启动两个实例
mysqldsafe --defaults-file=/etc/my-5.7.cnf & mysqldsafe --defaults-file=/etc/my-8.0.cnf &
查看运行状态
ss -tulnp | grep mysql
五、核心差异与注意事项
认证方式改变
- 8.0默认使用cachingsha2password插件
- 兼容旧客户端需修改为mysqlnativepassword
性能优化对比
| 特性 | 5.7 | 8.0 |
|---------------|-------------|-------------|
| 读写性能 | 高 | 提升20-30% |
| 索引优化 | B-Tree | 倒排索引 |
| 事务吞吐量 | 10万QPS | 15万QPS |备份兼容性
bash
8.0可向下兼容导出5.7数据
mysqldump --compatible=mysql57 dbname > backup.sql
六、常见问题排查
启动失败处理
bash
查看错误日志
tail -100 /var/log/mysqld.log
常见问题:权限不足
chown -R mysql:mysql /var/lib/mysql
忘记root密码
bash
5.7版本重置方式:
mysqld_safe --skip-grant-tables &
mysql -u root