在没有网络的环境下,在同一台机器上安装多个 MySQL 版本是可行的,适用于开发测试或版本兼容性验证。关键在于避免端口、数据目录、配置文件和服务名冲突。以下是具体操作方法。
1. 准备离线安装包
从 MySQL 官网下载所需版本的离线安装包(如 .tar.gz 或 .zip),推荐使用通用二进制包(不依赖系统包管理器)。例如:
mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz mysql-8.0.36-linux-glibc2.17-x86_64.tar.gz将这些包拷贝到目标机器,解压到不同目录,比如:
/usr/local/mysql-5.7 /usr/local/mysql-8.0
2. 创建独立运行环境
每个版本需要独立的数据目录、配置文件和用户权限。
创建专用用户(可共用 mysql 用户):useradd -r -s /bin/false mysql为每个版本建立数据目录:
mkdir /data/mysql-5.7 /data/mysql-8.0
chown mysql:mysql /data/mysql-*初始化数据(以 MySQL 5.7 为例):
/usr/local/mysql-5.7/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/data/mysql-5.7MySQL 8.0 同理,替换路径即可。
3. 配置独立 my.cnf 文件
每个实例使用不同的配置文件,避免端口和 socket 冲突。
创建
/etc/my-5.7.cnf:
[mysqld] port=3307 socket=/tmp/mysql-5.7.sock pid-file=/data/mysql-5.7/mysql.pid basedir=/usr/local/mysql-5.7 datadir=/data/mysql-5.7 server-id=1 log-error=/data/mysql-5.7/error.log
创建
/etc/my-8.0.cnf:
[mysqld] port=3308 socket=/tmp/mysql-8.0.sock pid-file=/data/mysql-8.0/mysql.pid basedir=/usr/local/mysql-8.0 datadir=/data/mysql-8.0 server-id=2 log-error=/data/mysql-8.0/error.log
4. 启动与管理各实例
使用 mysqld_safe 或直接调用 mysqld 启动,指定配置文件。
启动 MySQL 5.7:/usr/local/mysql-5.7/bin/mysqld_safe --defaults-file=/etc/my-5.7.cnf &启动 MySQL 8.0:
/usr/local/mysql-8.0/bin/mysqld_safe --defaults-file=/etc/my-8.0.cnf &连接时指定端口:
mysql -u root -p -P 3307 -h 127.0.0.1(5.7)
mysql -u root -p -P 3308 -h 127.0.0.1(8.0)
如需设置开机自启,可编写 systemd 服务脚本,分别命名为 mysql-5.7.service 和 mysql-8.0.service,注意服务名和路径隔离。
基本上就这些。只要路径、端口、配置分离清楚,多版本共存很稳定。注意防火墙和 SELinux 不要拦截本地端口。离线安装的核心是提前准备好所有依赖和包,不依赖在线源。
