Ubuntu 22.04系统中同时安装运行MySQL 8与MySQL 5.7的方法咨询
Ubuntu 22.04系统中同时安装运行MySQL 8与MySQL 5.7的方法咨询
嗨,我来帮你搞定Ubuntu 22.04上同时跑MySQL 8和5.7的问题!Windows上确实省心,但Linux上需要调整配置避开端口、套接字这些冲突点,跟着下面的步骤操作就没问题:
第一步:先处理已有的MySQL 5.7实例
首先得确认现有5.7的状态,避免后续冲突:
- 查看当前5.7服务状态:
systemctl status mysql,记住它默认的端口(一般是3306)和套接字路径(通常是/var/run/mysqld/mysqld.sock) - 暂时停止5.7服务:
sudo systemctl stop mysql
第二步:为MySQL 8创建专属的配置与数据目录
我们要给MySQL 8单独分配资源,不和5.7共用:
- 创建专属数据目录并设置权限:
sudo mkdir -p /var/lib/mysql8 sudo chown mysql:mysql /var/lib/mysql8 - 复制一份默认配置文件作为MySQL 8的模板:
sudo cp /etc/mysql/my.cnf /etc/mysql/my8.cnf - 编辑
my8.cnf,修改核心参数(找到[mysqld]段,替换或添加以下内容):port = 3307 # 和5.7的3306区分开 socket = /var/run/mysqld/mysqld8.sock datadir = /var/lib/mysql8 pid-file = /var/run/mysqld/mysqld8.pid log-error = /var/log/mysql/error8.log # 单独的日志文件,方便排查问题
第三步:初始化MySQL 8实例
用初始化命令生成8的基础数据结构:
sudo mysqld --defaults-file=/etc/mysql/my8.cnf --initialize --user=mysql
执行完后,一定要记下临时密码——它会在输出里显示,或者去我们刚才指定的日志文件里找:
sudo grep 'temporary password' /var/log/mysql/error8.log
第四步:创建MySQL 8的systemd服务
这样我们就能用systemctl像管理5.7一样管理8了:
- 创建服务文件:
sudo nano /etc/systemd/system/mysql8.service - 粘贴以下内容(确保路径和你之前设置的一致):
[Unit] Description=MySQL 8.0 Database Server After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/my8.cnf Restart=always RestartSec=5 [Install] WantedBy=multi-user.target - 重新加载systemd让配置生效:
sudo systemctl daemon-reload
第五步:启动并配置MySQL 8
- 启动8的服务:
sudo systemctl start mysql8 - 检查服务状态,确认正常运行:
sudo systemctl status mysql8 - 用临时密码登录8,然后设置新密码:
登录后执行修改密码的命令:mysql -uroot -p -P3307 -S/var/run/mysqld/mysqld8.sockALTER USER 'root'@'localhost' IDENTIFIED BY '你的安全新密码';
第六步:恢复MySQL 5.7运行
现在可以重新启动5.7的服务,两个实例就能同时跑了:
sudo systemctl start mysql
日常使用小技巧
- 登录5.7:直接用
mysql -uroot -p(默认端口3306) - 登录8.0:需要指定端口和套接字:
mysql -uroot -p -P3307 -S/var/run/mysqld/mysqld8.sock - 如果服务器开了防火墙,记得放行3307端口:
sudo ufw allow 3307/tcp
备注:内容来源于stack exchange,提问作者Abdullah
相关产品推荐
相关产品推荐

