赞
踩
本文根据网络多篇文章以及本人实践集合而成。主要参考文章来源:(39条消息) linux安装两个mysql(8.0和5.7),并同时使用_HetFrame的博客-CSDN博客
本次示例在一台centos7.9的虚拟机上安装并启动了mysql57和mysql8,在安装前,需要先清理环境上面已有的mysql服务,卸载方法比较简单,自行百度即可。话不多说,实践开始。
目录
mysql8下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
mysql57下载地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
1、下载mysql 8.0
我使用的centos7,这里选择linux-generic,然后下载第一个,第一个解压就可以用了(.tar.xz)。
2.下载mysql 5.7
先选择以前的版本,同样下载第一个。
1、解压并移动(这里使用mysql57,另一个操作相似,只改目录端口即可)
- tar -zxf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
-
- mv mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/mysql57
2、配置mysql
mysql服务需要单独的用户,所以添加用户组及用户mysql
useradd mysql
修改文件所属用户用户组
chown mysql:mysql /usr/local/mysql57 -R
创建mysql57配置文件
我在mysql57目录下创建的my.cnf
- cd /usr/local/mysql57
-
- 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
- #skip-networking
- #mysql安装目录
- basedir=/usr/local/mysql57
- #mysql数据库目录
- datadir=/usr/local/mysql57/data
- #指定socket目录
- socket=/tmp/mysql57/mysql.sock
- #指定mysql57的端口
- port = 3306
-
- [mysqld_safe]
- #错误日志
- log-error=/usr/local/mysql57/data/error.log
- #pid文件
- pid-file=/usr/local/mysql57/data/mysqld.pid
- tmpdir=/tmp/mysql57
- #指定socket目录
- socket=/tmp/mysql57/mysql.sock
- #
- # include all files from the config directory
- #
- #!includedir /etc/my.cnf.d
根据如上配置,创建好相应的目录并赋权:
- cd /usr/local/mysql57
-
- mkdir data
-
- mkdir -p /tmp/mysql57
-
- chown -R mysql:mysql /usr/local/mysql57
-
- chown -R mysql:mysql /tmp/mysql57
3、初始化
这里需要手动设置两个路径以及用户,--initialize-insecure是不生成随机密码的方式,--initialize会在日志生成随机密码(由于上面my.cnf配置的跳过表权限,所以此处初始化使用的--initialize-insecure)
/usr/local/mysql57/bin/mysqld --initialize-insecure --datadir=/usr/local/mysql57/data --basedir=/usr/local/mysql57 --user=mysql
本次示例使用mysqld_safe来启动服务。
编辑/usr/local/mysql57/support-files目录下的mysql.server文件
vi /usr/local/mysql57/support-files/mysql.server
编辑以下内容
- basedir=/usr/local/mysql57
- datadir=/usr/local/mysql57/data
- lockdir='/var/lock/subsys57'
- lock_file_path="$lockdir/mysql57"
- mysqld_pid_file_path=/usr/local/mysql57/data/mysqld.pid
- #搜索conf后再修改,这个在else语句里面
- conf=/usr/local/mysql57/my.cnf
- #搜索mysqld_safe后再修改,在mysqld_safe启动命令中添加--defaults-file和--port
- $bindir/mysqld_safe --defaults-file=/usr/local/mysql57/my.cnf --port=3306 --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
复制该文件到/etc/init.d目录,并重命名为mysql57
cp -i /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysql57
启动mysql
service mysql57 start
重启mysql
service mysql57 restart
停止mysql
service mysql57 stop
查看mysql57是否启动:
service mysql57 status
其他版本的mysql也这样配置,只要设置好路径就共存(如需要再启动一个mysql8,从第二步安装开始,将上面路径中的mysql57替换为mysql8操作一遍即可)
为方便登录数据库测试,将其中一个mysql写入环境变量中。
- vi /etc/profile
-
- #在/etc/profile文件中,将mysql追加到path后面,如
-
- export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql57/bin
执行source使环境变量生效
source /etc/profile
登录数据库:(注意:端口的参数P是大写,密码的参数p是小写,在要求输入密码那里直接回车即可)
mysql -h 本机ip -P 数据库监听端口 -uroot -p
查询端口进行确认:
- mysql> show variables like 'port';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | port | 3306 |
- +---------------+-------+
- 1 row in set (0.00 sec)
查询数据库版本:
- mysql> select @@version;
- +-----------+
- | @@version |
- +-----------+
- | 5.7.41 |
- +-----------+
- 1 row in set (0.00 sec)
修改root密码及远程登录:
- flush privileges;
-
- ALTER USER 'root'@'localhost' IDENTIFIED BY 'test';
-
- use mysql;
-
- update user set Host='%' where User='root';
-
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; ##该语句首次执行会报错,需要执行两次
-
- flush privileges;
-
- ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-
- flush privileges;
赋予mysql57可执行权限:
chmod +x /etc/init.d/mysql57
将mysql57加入开机自启动:
chkconfig --add /etc/init.d/mysql57
查看服务列表:
chkconfig --list
看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:chkconfig --level 345 mysql57 on
重启虚拟机,验证开机自启服务是否正常:
- reboot
-
-
- #待虚拟机重启后,ps -ef和netstat看下mysql服务是否成功启动
- ps -ef|grep mysql
-
- netstat -anp|grep mysql
配置文件my.cnf:
[mysqld]
#配置关闭skip-grant-tables参数,在mysql8.0中,skip-grant-tables这个参数的作用是是否禁用远程连接服务器,与mysql57中的skip-networking参数作用是一样的
#skip-grant-tables关闭
#skip-grant-tables
#skip-networking
#mysql安装目录
basedir=/mysql/mysql8_0
#mysql数据库目录
datadir=/mysql/mysql8_0/data
#指定socket目录
socket=/tmp/mysql8_0/mysql.sock
#指定mysql8_0的端口(默认为3306)
port = 4406
##指定mysql x协议端口,这是一个系统默认启用的一个插件相关的协议(默认为33060)
mysqlx-port=44060
#错误日志
log-error=/mysql/mysql8_0/data/error.log
#pid文件
pid-file=/mysql/mysql8_0/data/mysqld.pid
tmpdir=/tmp/mysql8_0
[mysqld_safe]
#错误日志
log-error=/mysql/mysql8_0/data/error.log
#pid文件
pid-file=/mysql/mysql8_0/data/mysqld.pid
tmpdir=/tmp/mysql8_0
#指定socket目录
socket=/tmp/mysql8_0/mysql.sock
另一个需要注意的点是,在mysql57的mysqld_safe启动命令中,我们写的用户是mysql,而在mysql8中,如果我们用root用户执行启动命令的话,我们就需要将启动脚本中的用户修改为root,而不是安装用户。
如:
[root@opengauss mysql8_0]# cat /etc/init.d/mysql8_0 |grep safe
if test -x $bindir/mysqld_safe
$bindir/mysqld_safe --defaults-file=/mysql/mysql8_0/my.cnf --port=4406 --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --user=root $other_args >/dev/null &
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。