linux mysql8升级 安装 常见问题

一、背景

本次操作为mysql8.0.19与8.0.20版本升级mysql8.0.23
操作背景为20及以下版本出现漏洞需修复
在这里插入图片描述

二、数据备份

命令行操作
备份: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
在这里插入图片描述
对应mysql-community全干掉
rpm -e --nodeps 名称
–nodeps 强力删除

四、安装新版

1.下载
官网下载地址:https://dev.mysql.com/downloads/mysql/
在这里插入图片描述找准自己的版本和对应系统!!
2.上传解压
直接传到/usr/local位置
建议这个位置,data目录可以放在其他磁盘空间较大的地方

解压:tar -Jxf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz 并且重命名 mysql
在这里插入图片描述
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
在这里插入图片描述
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目录
在这里插入图片描述
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
在这里插入图片描述启动和停止
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段。执行完成如下就可以了
在这里插入图片描述
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 …
在这里插入图片描述
出现如上问题报错,点击确认后不会对正常使用产生影响。
如果想要这个错误不出现,需要在root用户下,给对应用户赋予process权限。如下所示:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值