linux 下同时安装 mysql5.7 和 mysql8.0
1. 分别在 mysql官网 下载 mysql5.7 和 mysql 8.0
2. 解压
mysql5.7 解压到 /usr/local/mysql57,mysql8.0 解压到 /usr/local/mysql80
3. 添加配置文件
-
分别在mysql57 和 mysql80 目录下 创建一个 my.cnf 文件,
并修改权限: chmod 755 /usr/local/mysql80/my.cnf#mysql80目录下的my.cnf,mysql57 下的将对应的 mysql 后面的 80 改成 57,修改端口号为 3305(随意,不被占用就行), 删掉标注不要的内容 即可 [client] port=3308 #mysql57 不要这个 mysqlx_port=33080 socket=/tmp/mysql80.sock #mysql57 不要这个 mysqlx_socket=/tmp/mysqlx80.sock [mysqld] skip-grant-tables #mysql安装目录 basedir=/usr/local/mysql80 #mysql数据库目录 datadir=/usr/local/mysql80/data port=3308 #mysql57 不要这个 mysqlx_port=33080 socket = /tmp/mysql80.sock #mysql57 不要这个 mysqlx_socket=/tmp/mysqlx80.sock [mysqld_safe] #错误日志 log-error=/usr/local/mysql80/data/error.log #pid文件 pid-file=/usr/local/mysql80/data/mysqld.pid tmpdir=/tmp/mysql80
-
修改文件 /usr/local/mysql80/support-files/mysql.server 中的如下内容,并将修改后的文件复制到 /etc/init.d 目录,并重命名为 mysql80(mysql57同理)
basedir=/usr/local/mysql80 datadir=/usr/local/mysql80/data lockdir='/var/lock/subsys' lock_file_path="$lockdir/mysql80" mysqld_pid_file_path=/usr/local/mysql80/data/mysqld.pid conf=/usr/local/mysql80/my.cnf
4. 添加用户和用户组,修改目录所有者
groupadd mysql;
useradd mysql -g mysql;
chown mysql:mysql /usr/local/mysql57;
chown mysql:mysql /usr/local/mysql80;
5. 初始化(mysql57 同理)
/usr/local/mysql80/bin/mysqld --defaults-file=/usr/local/mysql80/my.cnf --user=mysql --initialize
会得到一个密码
6. 启动 mysql 服务(mysql57 同理)
service mysql80 start
7. 登录(mysql57 同理)
/usr/local/mysql80/bin/mysql --socket=/tmp/mysql80.sock -uroot -p‘fQg-?/h1kfi:’
8. 修改密码(mysql57 同理)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> alter user root identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set host='%' where user='root' and host='localhost';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
9. mysql80 端口为 0 问题
- 停止服务
service mysql80 stop - 修改 /usr/local/mysql80/my.cnf
将 [mysqld] 下的 skip-grant-tables 注释 - 重新启动服务
service mysql80 start