阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL8.0新特性之默认使用caching_sha2_password作为身份验证插件

156次阅读
没有评论

共计 3458 个字符,预计需要花费 9 分钟才能阅读完成。

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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3458字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中