一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除!
MySQL 8.0 简介
MySQL 8.0与5.7的区别主要体现在:1、性能提升;2、新的默认字符集;3、更好的错误日志;4、提供了角色的概念;5、增强的JSON支持。从整体来看,MySQL 8.0在性能和功能上都做了较大的提升。
MySQL 8.0是MySQL数据库的一个版本,它在性能、稳定性、易用性等方面都有了显著的提升。8.0版本引入了很多新的功能,如窗口函数、公共表表达式(CTE)、角色等。
更多内容请参考官方文档
一、安装MySQL
1、获取MySQL软件包
MySQL :: MySQL Community Downloads
2、下载安装
mysql-8.0.35-1.el7.x86_64.rpm-bundle.tar
3、使用rpm包功能说明
MySQL8 数据文件解析
4、使用rpm包安装
linux配置本地YUM源及网络YUM源_本地yum源配置文件-CSDN博客
解决安装依赖包,如果缺少就用yum源进行安装
删除mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64
安装MySQL数据库
[root@192 opt]# rpm -ivh mysql-community-common-8.0.35-1.el7.x86_64.rpm
[root@192 opt]# rpm -ivh mysql-community-client-plugins-8.0.35-1.el7.x86_64.rpm
[root@192 opt]# rpm -ivh mysql-community-libs-8.0.35-1.el7.x86_64.rpm
[root@192 opt]# rpm -ivh mysql-community-client-8.0.35-1.el7.x86_64.rpm
[root@192 opt]# rpm -ivh mysql-community-icu-data-files-8.0.35-1.el7.x86_64.rpm
[root@192 opt]# rpm -ivh mysql-community-server-8.0.35-1.el7.x86_64.rpm
初始化MySQL
[root@192 ~]# mysqld --initialize-insecure --user=mysql
启动mysql
[root@192 ~]# cat /var/log/mysqld.log
[root@192 ~]# mysql -uroot -p (使用默认密码登录)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ops7565!#!#';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
5、msyql8 卸载
查询本机安装的mysql
[root@localhost mysql]# rpm -qa |grep -i mysql
mysql-community-icu-data-files-8.0.35-1.el7.x86_64
mysql-community-client-plugins-8.0.35-1.el7.x86_64
mysql-community-server-8.0.35-1.el7.x86_64
mysql-community-libs-8.0.35-1.el7.x86_64
mysql-community-client-8.0.35-1.el7.x86_64
mysql-community-common-8.0.35-1.el7.x86_64
[root@localhost mysql]#
卸载rpm包
[root@localhost mysql]# rpm -e --nodeps mysql-community-icu-data-files-8.0.35-1.el7.x86_64
[root@localhost mysql]# rpm -e --nodeps mysql-community-client-plugins-8.0.35-1.el7.x86_64
[root@localhost mysql]# rpm -e --nodeps mysql-community-server-8.0.35-1.el7.x86_64
[root@localhost mysql]# rpm -e --nodeps mysql-community-libs-8.0.35-1.el7.x86_64
[root@localhost mysql]# rpm -e --nodeps mysql-community-client-8.0.35-1.el7.x86_6
删除所有MySQL文件
find / -name mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/local/mysql
删除/etc/my.cnf配置文件
rm /etc/my.cnf
删除日志文件
rm -rf /var/log/mysql/mysqld.log
二、MySQL用户管理策略及资源限制
1、用户访问白名单
root@'%' ----任何地址
root@'192.0.0.1' ----只允许单个地址
root@'192.0.0.%' ----24掩码 1-254
root@'192.0.0.5%' ----50-59
root@'localhost' ----数据库本地socket
2、创建用户
2.1、mysql8新特性,创建用户时一并设置密码
mysql> create user test@'%' identified by '123';
2.2、创建用户兼容mysql老版本客户端
mysql> create user test2@'%' identified with mysql_native_password by '123';
Query OK, 0 rows affected (0.02 sec)
“WITH mysql_native_password” 是 MySQL 数据库中的一种身份验证插件,用于对用户进行身份验证。它使用 MySQL 原生的密码加密算法,是 MySQL 8.0 版本之后默认的身份验证方式。使用 “WITH mysql_native_password” 可以保证数据库的安全性,并且兼容旧版本的 MySQL 客户端。
2.3、删除用户
3、修改用户
mysql> alter user test2@'%' identified with mysql_native_password by '123456';
用户锁定与解锁
锁定test2用户
mysql> ALTER USER 'test2'@'%' ACCOUNT LOCK;
解锁test2用户
mysql> ALTER USER 'test2'@'%' ACCOUNT UNLOCK;
4、MySQL8用登录控制
4.1、设置密码过期时间
ALTER USER 'username'@'%' PASSWORD EXPIRE; //设置立即过期
ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 30 DAY; //设置30天过期
ALTER USER 'username'@'%' PASSWORD EXPIRE NEVER; //禁用密码过期
4.2、 禁止重复使用最近3个或超过30天的密码
修改文件 my.cnf,mysql8.0是/etc/my.cnf:
[mysqld]
password_history=3
password_reuse_interval=30
4.3、用户锁定策略
# 连续登录失败3次则锁定1天,天数可取值:0-32767,设置 0 则代表解锁
CREATE USER 'test'@'localhost' IDENTIFIED BY 'test123' FAILED_LOGIN_ATTEMPTS 7 PASSWORD_LOCK_TIME 1;
# 连续登录失败3次则永久锁定
ALTER USER 'try8'@'localhost' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNBOUNDED;
MYSQL8用户权限配置详解_mysql8.0修改用户库权限-CSDN博客
5、MySQL8 --root密码重置
5.1、 关闭数据库
[root@192 ~]# systemctl stop mysqld
5.2、安全模式启动数据库
[root@192 ~]# 2024-03-10T14:03:54.700831Z mysqld_safe Logging to '/data/3306/data/192.168.87.154.err'.
5.3、无密码登录数据库,刷新MySQL授权表
[root@192 ~]# mysql -uroot
5.4、重启数据库到测试新密码登录
三、MySQL8用户的新特性
1、密码插件,在8.0中替换为了 caching_sha2_password加密模式
2、在8.0中不支持grant直接创建用户并授权,必须先建用户后grant授权。
密码插件sha2会影响老的客户端程序连接问题。
例如:客户端工具,navicat 、 sqlyog工具不支持(无法连接)
主从复制,MGR ,不支持新的密码插件的用户
老的驱动无法连接数据库,代码需要更新
3、解决方法,建立用户时指定with mysql_native_password
create with mysql_native_password
alter with mysql_native_password
建议修改配置文件,指定密码插件,修改配置文件需要重启服务
vi /etc/my.cnf
default_authentication_plugin=mysql_native_password