centos7服务器下安装两个mysql数据库,分别为mysql7和mysql8

11小时前   阅读:114   类型:后端   分类:服务器    标签: 操作系统 服务器 Mysql

一、需求分析

centos7.5服务器,安装两个MySQL,一个版本为MySQL5.7.20,一个MySQL8.0.24,通过设置不同端口来达到两个同时运行,兼容不同项目。同时设置开机自启,网上很零散,整理了一份详细的,以下是实战教程

二、准备分别下载对应安装包:本文采用离线安装形式,在线安装也可供参考,配置基本差不多

2.1、MySQL7安装包及选择

官网下载安装包:https://downloads.mysql.com/archives/community/

2.2、MySQL8安装包及选择

三、上传至服务器,这里博主放到\data目录下

3.1、解压MySQL7安装包

进入/data

cd /data

解压mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C /data/

3.2、解压MySQL8安装包

解压mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz

tar -xvf mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz -C /data/

3.3、对解压的文件夹重命名

分别命名为MySQL5.7和MySQL8.0

四、创建mysql用户和用户组

groupadd mysql       # 创建mysql用户组 
useradd -r -g mysql mysql    # 创建mysql用户,-r:系统用户,不可用来登录系统 -g:指定用户组

五、创建mysql数据文件夹并赋予权限

5.1、创建MySQL5.7数据文件夹并赋予权限

mkdir -p /data/MySQL5.7/data   # 创建数据文件夹,-p:确保目录名称存在,不存在的就建一个 
chown mysql:mysql -R /data/MySQL5.7 # 赋予权限,-R:指定目录

5.2、创建MySQL8.0数据文件夹并赋予权限

mkdir -p /data/MySQL8.0/data   # 创建数据文件夹,-p:确保目录名称存在,不存在的就建一个 
chown mysql:mysql -R /data/MySQL8.0 # 赋予权限,-R:指定目录

六、配置my.cnf

6.1、配置MySQL5.7的my.cnf

进入到/data/MySQL5.7目录下,新建my.cnf,放置如下配置,同时端口设置为3306

[mysqld]
bind-address=0.0.0.0
#skip-networking
#mysql安装目录
basedir=/data/MySQL5.7
#mysql数据库目录
datadir=/data/MySQL5.7/data
#指定socket目录
socket=/data/MySQL5.7/data/tmp/mysql.sock
#socket=/tmp/mysql.sock
explicit_defaults_for_timestamp=true

#指定mysql57的端口
port = 3306
#错误日志
log-error=/data/MySQL5.7/data/error.log
#pid文件
pid-file=/data/MySQL5.7/data/mysqld.pid
explicit_defaults_for_timestamp=true

[client]
#指定socket目录
socket=/data/MySQL5.7/data/tmp/mysql.sock
#socket=/tmp/mysql.sock
[mysqld_safe]
#错误日志
log-error=/data/MySQL5.7/data/error.log
#pid文件
pid-file=/data/MySQL5.7/data/mysqld.pid
tmpdir=/data/MySQL5.7/data/tmp
#指定socket目录
socket=/data/MySQL5.7/data/tmp/mysql.sock
#socket=/tmp/mysql.sock
#指定mysql57的端口
port = 3306
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d

6.2、配置MySQL8.0的my.cnf

进入到/data/MySQL8.0目录下,新建my.cnf,放置如下配置,同时端口设置为3307

[client]
# 不推荐使用默认端口3306
port=3307
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
[mysqld]
bind-address=0.0.0.0
#socket=/tmp/mysql.sock
socket=/data/MySQL8.0/data/tmp/mysql.sock
# 不推荐使用默认端口3306
port=3307
# 绝对路径依据实际情况修改
sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
basedir=/data/MySQL8.0/
datadir=/data/MySQL8.0/data/
# tmpdir=/data/MySQL8.0/data/temp/
pid-file=/data/MySQL8.0/data/mysql.pid
# General and Slow logging.
log-output=FILE
general-log=0
general_log_file=/data/MySQL8.0/data/mysql-8.0-general.log
slow-query-log=1
slow_query_log_file=/data/MySQL8.0/data/mysql-8.0-slow.log
long_query_time=10
# Error Logging.
log-error=/data/MySQL8.0/data/mysql-8.0.err
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
# default_authentication_plugin=caching_sha2_password
default_authentication_plugin=mysql_native_password
default-storage-engine=INNODB
character-set-server=utf8mb4
max_connections=600
max_connect_errors=100
transaction_isolation=READ-COMMITTED
max_allowed_packet=64M
default-time-zone='+8:00'
log_timestamps=system
lower_case_table_names=1
table_open_cache=2000
tmp_table_size=512M
key_buffer_size=512M
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=16M
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size=54G
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
innodb_log_file_size=4G
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_open_files=300
innodb_file_per_table=1

七、初始化数据库

7.1、进入MySQL5.7的bin目录下

cd /data/MySQL5.7/bin

执行

./mysqld --defaults-file=/data/MySQL5.7/my.cnf --basedir=/data/MySQL5.7/ --datadir=/data/MySQL5.7/data/ --user=mysql --initialize

7.2、进入MySQL8.0的bin目录下

cd /data/MySQL8.0/bin

执行

./mysqld --defaults-file=/data/MySQL8.0/my.cnf --basedir=/data/MySQL8.0/ --datadir=/data/MySQL8.0/data/ --user=mysql --initialize

注:这里可能会出现错误:./mysqld: error while loading shared libraries: libaio.so.1: cannot open sha

解决方法:通常是因为系统缺少必要的库文件,

执行安装:

sudo yum install libaio

再次执行就不报错了。

八、复制启动脚本到资源⽬录

8.1、复制MySQL5.7启动脚本到资源⽬录

cp -i /data/MySQL5.7/support-files/mysql.server /etc/init.d/MySQL57

8.2、复制MySQL8.0启动脚本到资源⽬录

cp -i /data/MySQL8.0/support-files/mysql.server /etc/init.d/MySQL80

九、修改启动脚本配置

9.1、进入 /etc/init.d/目录下,打开MySQL57,修改basedirdatadir以及207行的conf

basedir修改为MySQL5.7安装路径

basedir=/data/MySQL5.7/

basedir修改为MySQL5.7数据库存放路径

datadir=/data/MySQL5.7/data

conf修改为my.cnf路径

 # Try to find basedir in /etc/my.cnf
 conf=/data/MySQL5.7/my.cnf

9.2、进入 /etc/init.d/目录下,打开MySQL80,修改basedirdatadir以及207行的conf

basedir修改为MySQL8.0安装路径

basedir=/data/MySQL8.0/

basedir修改为MySQL8.0数据库存放路径

datadir=/data/MySQL8.0/data

conf修改为my.cnf路径

 # Try to find basedir in /etc/my.cnf
 conf=/data/MySQL8.0/my.cnf

修改lockdir路径,为了不以MySQL5.7冲突

lockdir='/var/lock/subsys80'

十、设置开机启动

10.1、设置MySQL5.7开机启动

增加 MySQL57服务控制脚本执⾏权限

chmod +x /etc/init.d/MySQL57

将 MySQL57服务加⼊到系统服务

chkconfig --add /etc/init.d/MySQL57

检查 MySQL57服务是否已经⽣效

chkconfig --list MySQL57

10.2、设置MySQL8.0开机启动

增加 MySQL80服务控制脚本执⾏权限

chmod +x /etc/init.d/MySQL80

将 MySQL80服务加⼊到系统服务

chkconfig --add /etc/init.d/MySQL80

检查 MySQL80服务是否已经⽣效

chkconfig --list MySQL80

十二、查看MySQL数据库初始密码

12.1、查看MySQL5.7初始密码

打开/data/MySQL5.7/data/里面的error.log文件,一般是在最顶端末尾可以看到密码。如下图

12.2、查看MySQL8.0初始密码

打开/data/MySQL8.0/data/里面的error.log文件,一般是在最顶端末尾可以看到密码。如下图

十三、启动MySQL数据库。并登录以及开启远程连接和修改MySQL数据库密码

13.1、启动MySQL5.7

service mysql57 start

登陆MySQL5.7,输入上面的面密码

mysql -u root -p --socket=/data/MySQL5.7/data/tmp/mysql.sock

开启远程链接

use mysql           # 访问mysql库

select host,user,plugin from user;    # 查询mysql库
update user set host = '%' where user = 'root';  # 使root能再任何host访问
FLUSH PRIVILEGES;         # 刷新权限修改

修改MySQL5.7密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123@#MYSQL57'; FLUSH PRIVILEGES;

退出

exit;

13.2、启动MySQL8.0

service mysql80 start

登陆MySQL8.0,输入上面的面密码

mysql -u root -p --socket=/data/MySQL8.0/data/tmp/mysql.sock

开启远程链接

use mysql           # 访问mysql库

select host,user,plugin from user;    # 查询mysql库
update user set host = '%' where user = 'root';  # 使root能再任何host访问
FLUSH PRIVILEGES;         # 刷新权限修改

修改MySQL8.0密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123@#MYSQL80'; FLUSH PRIVILEGES;

退出

exit;

十四、常用命令

service mysqld57 status  # 查看状态 
service mysqld57  start   # 启动 
service mysqld57 stop    # 停止 
service mysqld57 restart   # 重启


service mysqld80 status  # 查看状态 
service mysqld80 start   # 启动 
service mysqld80 stop    # 停止 
service mysqld80 restart   # 重启
【腾讯云】2025上云采购,2核2G云服务器低至 68元/年

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://tpxhm.com/adetail/1144.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×