mysql5.8开始将caching_sha2_password作为默认的身份验证插件

该caching_sha2_password和 sha256_password认证插件提供比mysql_native_password插件更安全的密码加密 ,并 caching_sha2_password提供了比更好的性能sha256_password。由于这些优越的安全性和性能特性 caching_sha2_password它是MySQL 8.0首选的身份验证插件,而且也是默认的身份验证插件而不是 mysql_native_password。此更改会影响服务器和libmysqlclient 客户端库;目前来说和经常使用的客户端软件兼容性不好。

在MySQL 5.7中,默认的身份验证插件是 mysql_native_password!

libmysqlclient8.0之前的MySQL版本 的客户端库能够连接到MySQL 8.0服务器(通过身份验证的帐户除外 caching_sha2_password)。这意味着基于的8.0之前的客户端libmysqlclient也应该能够连接。例子:

①:标准的MySQL客户端,如mysql 和mysqladmin都是 libmysqlclient基于的。

②:Perl DBI的DBD :: mysql驱动程序是 libmysqlclient基于的。

③:MySQL Connector / Python有一个libmysqlclient基于C扩展模块 。要使用它,请use_pure=False在连接时包含该选项。

兼容caching_sha2_password身份验证的客户端:

①:libmysqlclientMySQL 8.0(8.0.4或更高版本)中 的客户端库。标准MySQL客户端(如mysql和 mysqladmin)是 libmysqlclient基于的,因此它们也是兼容的。

②:libmysqlclientMySQL 5.7(5.7.23或更高版本)中 的客户端库。标准MySQL客户端(如mysql和 mysqladmin)是 libmysqlclient基于的,因此它们也是兼容的。

③:MySQL Connector / C ++ 1.1.11或更高版本或8.0.7或更高版本。

④:MySQL Connector / J 8.0.9或更高版本。

⑤:MySQL Connector / NET 8.0.10或更高版本(通过经典的MySQL协议)。

⑥:MySQL Connector / Node.js 8.0.9或更高版本。

⑦:PHP:X DevAPI PHP扩展(mysql_xdevapi)支持 caching_sha2_password。

PHP:PDO_MySQL和ext / mysqli扩展不支持caching_sha2_password。此外,当与7.1.16之前的PHP版本和7.2.4之前的PHP 7.2一起使用时,default_authentication_plugin=caching_sha2_password 即使caching_sha2_password未使用它们也无法连接 。

注意:

①:此更改仅适用于安装或升级到MySQL 8.0或更高版本后创建的新帐户。对于已升级安装中已存在的帐户,其身份验证插件保持不变,还是mysql_native_password。当然也可以使用命令将用户的身份验证改为:caching_sha2_password;

如:ALTER USER user  IDENTIFIED WITH caching_sha2_password  BY 'password';

②:新安装MySQL8.0的数据库默认是使用caching_sha2_password身份验证的,必须使用5.8版本安装包内的客户端软件登录数据库,如果要更改root用户的身份认证方式,可以使用命令:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password  BY 'password';

1、caching_sha2_password兼容性问题和解决方案

如果您的MySQL安装必须服务于8.0之前的客户端,并且在升级到MySQL 8.0或更高版本后遇到兼容性问题,解决这些问题并恢复8.0之前的兼容性的最简单方法是重新配置服务器以恢复到以前的默认身份验证插件(mysql_native_password)。例如,在配置文件my.cnf中使用以下行:

[mysqld]

default_authentication_plugin=mysql_native_password

该设置允许8.0之前的客户端连接到8.0服务器,直到安装使用的客户端和连接器升级为了 caching_sha2_password。但是,该设置应被视为临时设置,而不是长期或永久性解决方案,因为它会导致使用有效设置创建的新帐户放弃提供的改进的身份验证安全性 caching_sha2_password。

注意:

如果目前使用的客户端和连接器不支持caching_sha2_password,则可以使用修改后的数据目录初始化过程,该过程会在创建root帐户后mysql_native_password立即关联该帐户,可以在初始化数据库的时候使用以下的方法解决:

①:初始化数据库的时候使用参数:--default-authentication-plugin=mysql_native_password 加上--initialize或 --initialize-insecure 选项

②:在配置文件中设置 default_authentication_plugin 为mysql_native_password选项,并使用--defaults-file选项和--initializeor 或 --initialize-insecure。(在这种情况下,如果您继续将该选项文件用于后续服务器启动,则将创建新帐户,mysql_native_password而不是 caching_sha2_password除非您default_authentication_plugin 从选项文件中删除该 设置。)

2、caching_sha2_password和复制

在所有服务器已升级到MySQL 8.0.4或更高版本的复制方案中,与主/主服务器的从/副本连接可以使用通过caching_sha2_password身份验证的帐户。对于此类连接,同样的要求适用于使用通过caching_sha2_password身份验证的帐户的其他客户端,使用安全连接或基于RSA的密码交换。

--:要连接到caching_sha2_password 主/从复制的帐户:

①:对于使用OpenSSL构建的MySQL,请使用以下任一 CHANGE MASTER TO选项:

MASTER_SSL = 1

GET_MASTER_PUBLIC_KEY = 1

MASTER_PUBLIC_KEY_PATH='path to RSA public key file'

②:对于MySQL使用wolfSSL,使用 MASTER_SSL=1带 CHANGE MASTER TO。或者,

如果在服务器启动时提供了所需的密钥,则可以使用与RSA公钥相关的选项。

--:要连接到caching_sha2_password 组复制的帐户:

①:对于使用OpenSSL构建的MySQL,请设置以下任何系统变量:

SET GLOBAL group_replication_recovery_use_ssl = ON;

SET GLOBAL group_replication_recovery_get_public_key = 1;

SET GLOBAL group_replication_recovery_public_key_path = 'path to RSA public key file';

②:对于使用wolfSSL构建的MySQL,请设置此系统变量:

SET GLOBAL group_replication_recovery_use_ssl = ON;

或者,如果在服务器启动时提供了所需的密钥,则可以使用与RSA公钥相关的选项。

官方文档:

https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

转载于:https://blog.51cto.com/fengfeng688/2147169

MySQL8.0新特性——默认使用caching_sha2_password作为身份验证插件相关推荐

  1. mysql sha256函数_MySQL8.0新特性——默认使用caching_sha2_password作为身份验证插件

    mysql5.8开始将caching_sha2_password作为默认的身份验证插件 该caching_sha2_password和 sha256_password认证插件提供比mysql_nati ...

  2. [WCF 4.0新特性] 默认终结点

    很多WCF的初学者是从之前的Web服务上转移过来的,他们非常怀念.asmx Web服务无配置的服务寄宿方式.你只需要在定义Web服务的时候再表示服务操作的方法上应用WebMethodAttribute ...

  3. MySQL基础篇13【MySQL8.0新特性】

    目录 1. MySQL8新特性概述 1.1 MySQL8.0 新增特性 1.2 MySQL8.0移除的旧特性 新特性1:窗口函数 2.1 使用窗口函数前后对比 2.2 窗口函数分类 2.3 语法结构 ...

  4. Mysql基础篇(10)—— MySQL8.0新特性概览

    新增的新特性 更简便的NoSQL支持. 更好的索引,新增了隐藏索引和降序索引.隐藏索引可以用来去掉索引对查询性能的影响.在查询中混合存在多列索引时,使用降序索引可以提高查询的性能. 更完善的JSON支 ...

  5. Mysql8.0新特性之详细版本

    1. 账户与安全 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc #EDC'; ...

  6. mysql8.0 新特性

    1.  账户与安全# 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc#EDC' ...

  7. MySQL8.0 - 新特性 - 临时表改进

    temptable engine 我们知道UNION, DERIVED TABLE, CTE, 子查询或者distinct order by之类的查询都可能用到临时表来存储中间结果,官方文档中列举了几 ...

  8. MySQL8.0 - 新特性 - Instant Add Column

    MySQL8.0开始对一些DDL操作做了大量的优化,例如原子DDL, 快速DDL(只修改元数据),前者解决了长期以来mysql的一大诟病,后者则提升了dba同学的生活品质 官方文档列出了一些可以快速d ...

  9. MySQL8.0 - 新特性 - 安全及权限相关改进

    MySQL8.0里引入了不少关于权限的改动,从这些改动可以看出来,权限管理更加的规范和遍历了,这和我们之前为rds mysql增加了大量权限管理很类似,想来Oracle也是通过这些改动为其云业务服务的 ...

最新文章

  1. 最新开源无监督单目深度估计方法,解决复杂室内场景难训练问题,效果性能远超SOTA...
  2. 小程序中获取高度以及设备的方法
  3. 关于java代码生成器---上篇之原理
  4. 【Vue】 vue-Router children 子组件空白显示,没有内容
  5. 【Python】学习Python的三个神级网站
  6. linux java性能监控工具_Linux实时监控工具Nmon使用
  7. mysql关系数据库引擎_MySQL数据库引擎详解
  8. 工作137:map函数
  9. 架构设计 | 高并发流量削峰,共享资源加锁机制
  10. 手机上图片信息怎么拉一个矩形框_华为手机EMUI系统隐藏的10个功能,上手体验后,实用性无敌了...
  11. gis等时圈怎么做_如何批量制作交通等时圈
  12. 1038. 统计同成绩学生(20)-PAT乙级真题
  13. 博文视点大讲堂第24期“PPT演示之道”专题讲座成功落幕
  14. linux vi只写入1个字节,关于linux命令的说明(这是一个命令集)
  15. 【直播录像】FLV缺帧视频处理方案
  16. coverity代码检测工具介绍_Coverity功能介绍
  17. Python词频统计与杨辉三角
  18. 管理与维护Linux系统
  19. 5G基础及计算机网络参考模型
  20. 用计算机制作思维导图,想用电脑做好思维导图你得先了知道这些事

热门文章

  1. java获取当前系统时间毫秒_java 获取当前系统时间简写 | 学步园
  2. 修理机器人基维斯_魔兽世界修理机器人沃尔特和移动邮箱怎么做
  3. Android应用开发-广播和服务
  4. 办公软件Office 2010下载安装介绍
  5. php缩紧空格,使用php-cs-fixer修复PHP代码文件的缩进
  6. PAT1052---------初步了解正则表达式
  7. Django学习笔记(10)——Book单表的增删改查页面
  8. javascript 常用知识点
  9. Java8Stream
  10. 利用intellijidea创建maven多模块项目