You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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共用:

  1. 创建专属数据目录并设置权限:
    sudo mkdir -p /var/lib/mysql8
    sudo chown mysql:mysql /var/lib/mysql8
    
  2. 复制一份默认配置文件作为MySQL 8的模板:
    sudo cp /etc/mysql/my.cnf /etc/mysql/my8.cnf
    
  3. 编辑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了:

  1. 创建服务文件:
    sudo nano /etc/systemd/system/mysql8.service
    
  2. 粘贴以下内容(确保路径和你之前设置的一致):
    [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
    
  3. 重新加载systemd让配置生效:
    sudo systemctl daemon-reload
    

第五步:启动并配置MySQL 8

  1. 启动8的服务:
    sudo systemctl start mysql8
    
  2. 检查服务状态,确认正常运行:
    sudo systemctl status mysql8
    
  3. 用临时密码登录8,然后设置新密码:
    mysql -uroot -p -P3307 -S/var/run/mysqld/mysqld8.sock
    
    登录后执行修改密码的命令:
    ALTER 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:57:35