linux安装两个mysql(8.0和5.7),并同时使用

一、下载mysql 8.0和mysql 5.7.30

mysql下载地址:https://dev.mysql.com/downloads/mysql/

1、下载mysql 8.0

我使用的centos7,这里选择linux-generic,然后下载第一个,第一个解压就可以用了(.tar.xz)。
在这里插入图片描述

2.下载mysql 5.7

先选择以前的版本,同样下载第一个。
在这里插入图片描述在这里插入图片描述

二、安装

1、解压并移动(这里使用5.7,另一个操作类似)
tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql5.7
2、配置mysql
mysql服务需要单独的用户,所以添加用户组及用户mysql
  1. 修改文件所属用户用户组
chown mysql:mysql /usr/local/mysql -R
  1. 创建mysql配置文件
    我在mysql目录下创建的my.cnf
vim my.cnf
这里面就是具体的文件目录配置,以及端口号
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld]
skip-grant-tables
#mysql安装目录
basedir=/usr/local/mysql5.7
#mysql数据库目录
datadir=/usr/local/mysql5.7/data

port = 3307

[mysqld_safe]
#错误日志
log-error=/usr/local/mysql5.7/data/error.log
#pid文件
pid-file=/usr/local/mysql5.7/data/mysqld.pid
tmpdir=/tmp/mysql5.7
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d
3、初始化
这里需要手动设置两个路径以及用户,--initialize-insecure是不生成随机密码的方式,--initialize会在日志生成随机密码
/usr/local/mysql5.7/bin/mysqld --initialize-insecure --datadir=/usr/local/mysql5.7/data/ --basedir=/usr/local/mysql5.7/ --user=mysql
4、启动
使用我们自己的my.cnf启动
这时候可以使用mysqld_safe,但是这样启动关闭起来也只能用命令关闭,所以需要使用脚本

/usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/usr/local/mysql5.7/my.cnf
进入mysql目录的support-files文件夹编辑mysql.server

vim /usr/local/mysql5.7/support-files/mysql.server

编辑以下内容

basedir=/usr/local/mysql5.7
datadir=/usr/local/mysql5.7/data
lockdir='/var/lock/subsys5.7'
lock_file_path="$lockdir/mysql5.7"
mysqld_pid_file_path=/usr/local/mysql5.7/data/mysqld.pid
#搜索conf后再修改,这个在else语句里面
conf=/usr/local/mysql5.7/my.cnf

复制该文件到/etc/init.d并重命名为mysql5.7

cp -i /usr/local/mysql5.7/support-files/mysql.server /etc/init.d/mysql5.7

使用方法

service mysql5.7 {start|stop|restart|reload|force-reload|status}

启动

service mysql5.7 start

启动后会报错
Starting MySQL.Logging to '/usr/local/mysql/data/error.log'. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).
原因是没有在mysql目录下创建data目录,我们创建一个data目录,并修改为用户用户组为mysql,再启动即可。

其他版本的mysql也这样配置,只要设置好路径就共存

<think>好的,用户想知道如何在同一台服务器上同时安装运行MySQL 5.78.0版本。我之前整理过相关的引用资料,需要仔细看看这些引用内容,然后分步骤解答。 首先,引用[1]提到在Windows上安装两个不同版本的MySQL,可能需要处理端口冲突服务名称的问题。虽然用户的问题可能是在服务器上,但步骤可能类似。需要确保每个实例使用不同的端口,比如5.7用3306,8.0用3307。另外,服务名称也要不同,例如MySQL57MySQL80,避免冲突。 然后引用[4]提供了不同版本的安装包链接,说明用户需要下载对应版本的压缩包进行安装。对于Linux系统,可能需要解压到不同的目录,比如/usr/local/mysql57/usr/local/mysql80。每个实例的配置文件my.cnf需要独立设置,指定不同的数据目录、端口、socket文件等,这可以避免数据混淆端口占用问题。 引用[2][3]提到在CentOS系统中安装MySQL5.78.0的步骤,包括关闭现有服务、使用管理员权限运行命令等。需要初始化每个实例的数据目录,且启动时指定对应的配置文件。此外,权限设置也很重要,确保每个实例的数据目录有正确的所有权。 接下来,安装步骤大概分为:下载解压安装包、配置文件调整、初始化数据库、启动服务。需要注意的是,每个步骤都要分别处理两个版本,确保路径、端口、服务名称不冲突。可能还需要设置环境变量,方便管理不同版本的客户端工具。 用户可能会遇到的问题包括端口冲突、服务启动失败、客户端连接问题等。比如,如果两个实例都尝试用同一个端口,肯定会有一个启动失败。这时候需要检查配置文件中的端口设置是否正确。另外,数据目录的权限问题也可能导致初始化失败,需要确保mysql用户有权限读写对应的目录。 安全方面,安装完成后需要为每个实例设置root密码,创建必要的用户权限。同时,防火墙设置也要开放对应的端口,允许外部访问。 总结来说,步骤应该是:准备安装目录配置文件,初始化每个实例,启动服务,验证安装,处理可能出现的冲突错误。需要详细说明每个步骤的具体操作,特别是配置文件的修改命令的执行。还要提醒用户注意版本差异带来的不同操作,比如MySQL8.0的默认认证插件可能不同,连接时可能需要调整客户端设置。</think>### 分步指南:在同一服务器同时安装 MySQL 5.7 8.0 #### 一、安装前准备 1. **下载安装包** 根据操作系统选择对应版本的安装包(以Linux为例)[^4]: - MySQL 5.7:`mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz` - MySQL 8.0:`mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz` 2. **创建独立目录** 解压到不同路径避免文件冲突: ```bash # MySQL 5.7 tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql57 # MySQL 8.0 tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql80 ``` #### 二、配置独立参数 1. **修改配置文件** 为每个版本创建独立的配置文件(例如`my57.cnf``my80.cnf`),需调整以下参数: ```ini # MySQL 5.7配置示例 [mysqld] port=3307 # 默认3306改为3307 datadir=/var/lib/mysql57 # 独立数据目录 socket=/tmp/mysql57.sock # 独立socket文件 ``` ```ini # MySQL 8.0配置示例 [mysqld] port=3308 # 默认3306改为3308 datadir=/var/lib/mysql80 socket=/tmp/mysql80.sock ``` 2. **初始化数据库** 分别初始化数据目录: ```bash # 初始化MySQL 5.7 /usr/local/mysql57/bin/mysqld --defaults-file=/etc/my57.cnf --initialize-insecure --user=mysql # 初始化MySQL 8.0 /usr/local/mysql80/bin/mysqld --defaults-file=/etc/my80.cnf --initialize-insecure --user=mysql ``` #### 三、启动与管理服务 1. **注册系统服务** 创建独立服务文件(例如`mysql57.service``mysql80.service`)指定配置路径[^2]: ```systemd # MySQL 5.7服务文件 [Service] ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/etc/my57.cnf ``` 2. **启动服务** ```bash systemctl start mysql57 # 启动5.7 systemctl start mysql80 # 启动8.0 ``` #### 四、验证与连接 1. **检查端口占用** ```bash netstat -tuln | grep '3307\|3308' # 确认端口监听正常 ``` 2. **客户端连接测试** 指定端口socket连接对应实例: ```bash # 连接MySQL 5.7 /usr/local/mysql57/bin/mysql -uroot -P3307 -S /tmp/mysql57.sock # 连接MySQL 8.0 /usr/local/mysql80/bin/mysql -uroot -P3308 -S /tmp/mysql80.sock ``` #### 五、常见问题解决 1. **端口冲突** 若启动失败,检查配置文件中的`port``socket`是否唯一。 2. **权限问题** 确保数据目录权限正确: ```bash chown -R mysql:mysql /var/lib/mysql57 chown -R mysql:mysql /var/lib/mysql80 ``` 3. **客户端兼容性** MySQL 8.0默认使用`caching_sha2_password`插件,旧客户端可能需调整认证方式[^1]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值