在宝塔面板中新增 MySQL 5.7 实例(与现有的 MySQL 8.0 共存)需要手动配置,以下是详细步骤:
一、准备工作
- 备份数据:操作前备份现有数据库
- 检查端口:确认 3306 已被 MySQL 8.0 使用,为 5.7 选择其他端口(如 3307)
- 下载安装包:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
二、安装 MySQL 5.7
1. 解压安装
# 解压到 /www/server/mysql57
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.44-linux-glibc2.12-x86_64 /www/server/mysql57
# 创建数据目录
mkdir -p /www/server/mysql57/data
chown -R mysql:mysql /www/server/mysql57
2. 初始化数据库
cd /www/server/mysql57
./bin/mysqld --initialize-insecure --user=mysql
--basedir=/www/server/mysql57
--datadir=/www/server/mysql57/data
--socket=/tmp/mysql57.sock
3. 创建配置文件
创建 /etc/my57.cnf:
[client]
port = 3307
socket = /tmp/mysql57.sock
[mysqld]
port = 3307
socket = /tmp/mysql57.sock
basedir = /www/server/mysql57
datadir = /www/server/mysql57/data
pid-file = /www/server/mysql57/mysql57.pid
log-error = /www/server/mysql57/error.log
server-id = 2
# 避免与 MySQL 8.0 冲突
tmpdir = /tmp/mysql57_tmp
4. 创建启动脚本
创建 /etc/init.d/mysqld57:
#!/bin/bash
basedir=/www/server/mysql57
datadir=/www/server/mysql57/data
case $1 in
start)
$basedir/bin/mysqld_safe --defaults-file=/etc/my57.cnf &
;;
stop)
$basedir/bin/mysqladmin -S /tmp/mysql57.sock shutdown
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
;;
esac
设置权限:
chmod +x /etc/init.d/mysqld57
三、启动和配置
1. 启动 MySQL 5.7
# 创建临时目录
mkdir -p /tmp/mysql57_tmp
chown mysql:mysql /tmp/mysql57_tmp
# 启动服务
/etc/init.d/mysqld57 start
# 设置 root 密码
/www/server/mysql57/bin/mysql -S /tmp/mysql57.sock -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';"
2. 创建系统服务
创建 /etc/systemd/system/mysqld57.service:
[Unit]
Description=MySQL 5.7 Server
After=network.target
[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/etc/init.d/mysqld57 start
ExecStop=/etc/init.d/mysqld57 stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用服务:
systemctl daemon-reload
systemctl enable mysqld57
四、宝塔面板配置
1. 添加防火墙规则
在宝塔面板的「安全」页面,放行 3307 端口
2. 连接管理
- MySQL 8.0:使用 3306 端口
- MySQL 5.7:使用 3307 端口
连接示例:
# 连接 MySQL 5.7
mysql -uroot -p -P3307 -h127.0.0.1
# 连接 MySQL 8.0(默认)
mysql -uroot -p -P3306 -h127.0.0.1
五、注意事项
- 资源监控:两个实例会共享系统资源,注意内存和CPU使用
- 备份策略:分别备份两个数据库实例
- 版本差异:注意 5.7 和 8.0 的语法和功能差异
- 端口冲突:确保其他应用不会使用 3307 端口
六、简化方案(使用 Docker)
如果觉得手动安装复杂,可以使用 Docker:
# 安装 Docker
curl -fsSL https://get.docker.com | bash
# 运行 MySQL 5.7 容器
docker run -d
--name mysql57
-p 3307:3306
-e MYSQL_ROOT_PASSWORD=你的密码
-v /www/server/mysql57_data:/var/lib/mysql
mysql:5.7
这样可以通过 3307 端口访问 MySQL 5.7,宝塔的 MySQL 8.0 保持不变。
常见问题解决
- 启动失败:检查
/www/server/mysql57/error.log - 端口占用:
netstat -tlnp | grep 3307 - 权限问题:确保所有文件属主为 mysql:mysql
建议先在生产环境测试,确保稳定后再正式使用。
CLOUD技术笔记