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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记本电脑摄像头不能用_电脑没有摄像头怎么办

现在大多数家庭电脑都没有配备摄像头,或者大多数普通笔记本电脑的摄像头又非常模糊,如果突然要用摄像头的话又不能马上买。但是手机上的摄像头又那么清楚,有没有办法把手机上的摄像头装到电脑上面呢?今天我要推荐的一款软件是Droi…

mysql创建的数据库在哪里_求助,mysql创建数据库找不到文件在哪问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html# *** DO NOT EDIT THIS FILE. Its a template which will be copied to the# *** default loca…

excel取消隐藏_猴哥讲述:对excel工作表进行隐藏和取消隐藏的操作行为

有的时候因为工作需要,我们会在一个工作簿中创建插入多个excel工作表,如果工作表越来越多,我们在选择操作工作表的时候很不方便,我们这时候就可以对excel工作表进行隐藏,excel工作表隐藏和取消隐藏的操作方法如下&…

mysql大量数据合并_mysql中将多行数据合并成一行数据

一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句:1 SELECT am.activeId,m.modelName2 FROM activemodel am3 JOIN model m4 ON am.modelId m.modelId5…

不同图像锐化算子提取的图像信息有哪些不同_传统图像处理

传统图像处理一、边缘检测算子①Sobel算子该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。与Prewitt算子相比,Sobel算子对于像素的位置的影响做了加权,可以降低边缘模糊程度,因此效…

文本聚类分析算法_聚类分析算法综述

前 言聚类是人类认识未知世界的一种重要的认知手段。在生产和生活中,人们往往面对非常复杂的事和物,如果能够把相似的东西归为一类,有明显区别的事物分属在不同的类别中,处理起来就大为简便。所谓“物以类聚,人以群分”,说的就是这个道理。譬如人们将生物分为动物和植物,又根据…

按照标题排序mysql_Oracle EBS Form中实现点击列标题进行排序

在做EBS表单开发时,虽然使用folder功能提供了排序功能,对多行数据块可以对前三列进行指定排序,也可以单击前三列的列标题进行排27.1 问题描述在做EBS表单开发时,虽然使用folder功能提供了排序功能,对多行数据块可以对前…

python 三维散点图拟合曲面_python实现三维拟合的方法

from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig plt.figure() ax Axes3D(fig) #列出实验数据 point[[2,3,48],[4,5,50],[5,7,51],[8,9,55],[9,12,56]] plt.xlabel("X1") plt.ylabel("X2") #表示…

vscode导入本地jar包_go导入本地包踩坑(已解决!)

当我想要仿照C语言的大程序结构,来写go语言的程序,出现下面的报错(ps:系统是windows,文本编辑器(或称IDE)是vscode)然后vscode还会时不时地在右下角出现这样地提示信息对于go语言新手…

java应用开发_开发简单的Java应用

第一章 开发简单的Java应用1、Java语言的技术分类(1)JavaSE:标准版,开发桌面应用(2)JavaEE:企业版,Web应用(3)JavaME:小型版,嵌入式2、如何开发和运行Java程序,分三步走(1)编写Java源程序*.java…

python以垂直方式输出hello world_python3提问:垂直输出Hello World,全部代码不超过2行....

垂直输出”HelloWorld”,全部代码不超过2行。输出:HelloWorld------------------------------------------------#Hello_World.pya"HelloWorld"print(a[0]\na[1]\na[2]\na[3]\na[4]... 垂直输出”Hello World”,全部代码不超过2行。…

java的static类_java中staticclass静态类详解

一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义…

java super用法_Java基础面试题汇总

blog.csdn.net/ThinkWon/article/details/104390612Java概述何为编程编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算…

java string返回_Java的String字符串内容总结

String--字符串获取字符串的长度使用Sring类的length()方法可获取字符串对象的长度,例:str.length();str代表指定的字符串对象;返回值为返回指定字符串的长度。例:获取字符串中指定字符的索引位置String类提供了indexOf()和lastIndexOf()方法…

汉诺塔java程序_Java编写一个汉诺塔的过程

[java]代码库/** 需求:用Java编写一个汉诺塔的过程* 汉若塔问题,就是把A柱子上面从大到小一次叠放的盘子借助B柱移到C柱上去,规则是一次只能移动一个盘子,大盘子不能放到小盘子之上** 思想:采用递归的方法来接* 1. 先将…

ajax 同步_第3部分-0:同步和异步,还有回调需要了解一下

同步是什么异步是什么 异步场景: (1)定时任务 (2)网络请求:Ajax 、图片加载 全面分析前端的网络请求方式 (3)事件绑定 异步产生知识点: 进程和线程 单线程 记一次 Vue 移…

音频重采样有什么用_最佳音频接口基本购买指南

音频接口是计算机实现录音功能的媒介设备,用于将乐器和麦克风发出的声音转换为数字信息,以便计算机可以理解并存储在硬盘上。在播放音频时,接口将数字音频文件重新转换为模拟信号,然后用监听音箱或耳机播放出来。简而言之&#xf…

java dom xpath_Java:在org.w3c.dom文档中获取元素的xpath

我写了我想要达到的目标.但是,getElementIdx()函数不会返回正确的计数. getPrevIoUsSibling()存在问题,但我不知道为什么.public static String getElementXpath(DOMElement elt){String path "";try{for (; elt ! null; elt (DOMElement) elt.getParentNode()){in…

java 正则 最后一个字符_正则表达式怎么匹配字符串中最后一串数字?

展开全部importretempDwellTime:666mre.search(r\d*,temp)printrepr(m.group()),m.start(),m.end()mre.search(r\d,temp)printrepr(m.group()),m.start(),m.end()printre.findall(r\d*,temp)输出:006661114[,,,,,,,,,,,666,]扩展资料正则表达式,校验数字…

lombok原理_听说学会用 Lombok 就可以让你早点下班?(你还不看)

听说隔壁用 Lombok 的六点就下班了,我也想六点下班!好的,那么这篇文章就介绍下什么是 Lombok,Lombok 做了什么以及 Lombok 是怎么做的?在介绍之前,先通过是否使用 Lombok 的效果来看下对比,首先…