linux mysql8升级

  • 一、背景
  • 二、数据备份
  • 三、卸载
  • 四、安装新版
  • 五、数据恢复
  • 六、其他附加问题


一、背景

本次操作为mysql8.0.19与8.0.20版本升级mysql8.0.23

操作背景为20及以下版本出现漏洞需修复

mysql8版本换成5版本 mysql8升级_数据库

二、数据备份

命令行操作
备份:mysqldump -u root -p --all-databases >/data/20210413_all.sql
mysqldump -u root -p --all-databases >/data/20210413_all.sql
恢复:mysql -u root -p </data/20210413_all.sql

三、卸载

1.查找 rpm -qa | grep -i mysql

mysql8版本换成5版本 mysql8升级_mysql8版本换成5版本_02


对应mysql-community全干掉

rpm -e --nodeps 名称

–nodeps 强力删除

四、安装新版

1.下载

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

mysql8版本换成5版本 mysql8升级_mysql_03

找准自己的版本和对应系统!!

2.上传解压

直接传到/usr/local位置

建议这个位置,data目录可以放在其他磁盘空间较大的地方解压:tar -Jxf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz 并且重命名 mysql

mysql8版本换成5版本 mysql8升级_sql_04


3.创个mysql用户并设置密码(已有可忽略)

[root@service05 mysql]# groupadd mysql
 [root@service05 mysql]# useradd -r -g mysql mysql
 [root@service05 mysql]# passwd mysql

4.将解压的mysql改成mysql用户的文件

chown -R mysql:mysql ./mysql

mysql8版本换成5版本 mysql8升级_mysql8版本换成5版本_05


5.修改mysql配置文件:

vim /etc/my.cnf

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
datadir=/home/mysql
log-bin=/home/mysql/mysql-bin.log
character-set-server = utf8mb4
lower_case_table_names=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
expire_logs_days=3
max_connections=500
wait_timeout = 600
interactive_timeout = 600
#default_authentication_plugin=mysql_native_password

socket的client和mysqld配置路径应相同可默认在/tmp

character-set-server = utf8mb4 标识字符集编码,最好设置为utf8mb4
 lower_case_table_names=1 配置表名不区分大小写,其实是强制性小写

注意:此处datadir的配置/home/mysql,如下所示,网上默认位置建议是/usr/local/mysql/data,这里踩过几个坑,我们服务器 / 目录下的空间为50G,当被占满时会严重影响mysql使用,建议根据自己磁盘或挂载盘的位置调整data目录

mysql8版本换成5版本 mysql8升级_mysql_06


6.初始数据库

./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql --lower_case_table_names=1

注意:basedir为你自己my.cnf配置的路径,建议设置为/usr/local/mysql,data地址改成大存储目录即可

此处执行完成后会出现root的初始密码

root@localhost:********* 直接粘贴出来放记事本上

7.启动

./support-files/mysql.server start

mysql8版本换成5版本 mysql8升级_mysql8版本换成5版本_07

启动和停止

8.登录改密码

./bin/mysql -uroot -p.
 alter user ‘root’@‘localhost’ identified by ‘**********’;9.配置支持远程访问
 CREATE USER ‘root’@‘%’ IDENTIFIED BY ‘**********’;
 grant all privileges on . to ‘root’@‘%’ with grant option;
 flush privileges;

注意:这里配置为所有都可连接,可根据自身需求自己更改指定ip或ip段。执行完成如下就可以了

mysql8版本换成5版本 mysql8升级_mysql8版本换成5版本_08


10.启动和停止

[root@service05 mysql]# ./support-files/mysql.server start
Starting MySQL.. SUCCESS! 
[root@service05 mysql]# ./support-files/mysql.server restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL.. SUCCESS! 
[root@service05 mysql]# ./support-files/mysql.server stop
Shutting down MySQL.. SUCCESS!

五、数据恢复

mysql -u root -p </data/20210413_all.sql


根据刚才的备份文件恢复数据,数据量小的话基本上很快搞定。

六、其他附加问题

1.mysql查看数据库连接信息
1.1
查看当前连接到数据库的用户和Host :

SELECT DISTINCT USER,HOST FROM information_schema.PROCESSLIST P WHERE P.USER NOT IN(‘root’,‘repl’,‘system user’)

查看每个host的当前连接数和总连接数:

SELECT * FROM performance_schema.hosts;

按照登录用户+登录服务器查看登录信息:

SELECT
 USER as login_user,
 LEFT(HOST,POSITION(‘:’ IN HOST)-1) AS login_ip,
 count(1) as login_count
 FROM information_schema.PROCESSLIST P
 WHERE P.USER NOT IN(‘root’,‘repl’,‘system user’)
 GROUP BY USER,LEFT(HOST,POSITION(‘:’ IN HOST)-1)
 ORDER BY COUNT(1) DESC;

按照登录用户+数据库+登录服务器查看登录信息:

SELECT
 DB as database_name,
 USER as login_user,
 LEFT(HOST,POSITION(‘:’ IN HOST)-1) AS login_ip,
 count(1) as login_count
 FROM information_schema.PROCESSLIST P
 WHERE P.USER NOT IN(‘root’,‘repl’,‘system user’)
 GROUP BY DB,USER,LEFT(HOST,POSITION(‘:’ IN HOST)-1)
 ORDER BY COUNT(1) DESC;

1.2连接刷新

flush hosts;
 show variables like ‘%max_connect_errors%’;

2、数据库操作
2.1增加用户并授权
2.1.1进入命令行
use mysql;
2.1.2创建数据库并指定数据库格式

CREATE DATABASE IF NOT EXISTS plotting default charset utf8 COLLATE utf8_general_ci;


2.1.3创建用户

//允许所有ip连接(用通配符%表示)
 create user ‘plotting’@‘%’ identified by ‘PqoAqx#77e$@’;


2.1.4用户增加plotting数据库所有权限

show grants for ‘plotting’;
 grant all privileges on plotting.* to plotting@‘%’ ;


2.1.5刷新

FLUSH PRIVILEGES;


2.1.6删除用户

DROP USER username@localhost;

四、连接问题

出现1227 - Access denied;you need (atleast one of) the PROCESS …

mysql8版本换成5版本 mysql8升级_mysql8版本换成5版本_09


出现如上问题报错,点击确认后不会对正常使用产生影响。

如果想要这个错误不出现,需要在root用户下,给对应用户赋予process权限。如下所示:

mysql8版本换成5版本 mysql8升级_sql_10