一、需求分析
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,修改basedir和datadir以及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,修改basedir和datadir以及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 # 重启
文章评论(0)