MySQL8认证插件——Native Pluggable Authentication

这次来翻译一下 MySQL8认证插件, 欢迎指正。

目前MySQL认证插件种类有如下:

插件

适用版本

说明

Native Pluggable Authentication

基于本机密码哈希方法实现身份验证

Caching SHA-2 Pluggable Authentication

实现SHA-256身份验证(如sha256_password),但在服务器端使用缓存

SHA-256 Pluggable Authentication

基于本机使用SHA-256密码哈希执行身份验证

Client-Side Cleartext Pluggable Authentication

客户端身份验证插件,可以让客户端将密码以明文形式发送到服务器,而不需要哈希或加密。这个插件内置在MySQL客户端库中

PAM Pluggable Authentication

仅支持MySQL Enterprise

(Pluggable authentication Modules)来认证MySQL用户。外部身份验证,代理用户支持

Windows Pluggable Authentication

Windows上使用本地Windows服务对客户端连接进行身份验证

LDAP Pluggable Authentication

仅支持MySQL Enterprise

使用LDAP(轻量级目录访问协议)通过访问目录服务(如X.500)来认证MySQL用户

Kerberos Pluggable Authentication

仅支持MySQL Enterprise

使用Kerberos进行身份验证。MySQL 8.0.26及更高版本中可用windows和linux环境

No-Login Pluggable Authentication

mysql_no_login服务器端身份验证插件阻止所有客户端连接到任何使用它的帐户

Socket Peer-Credential Pluggable Authentication

服务器端auth_socket身份验证插件对通过Unix套接字文件从本地主机连接的客户机进行身份验证

FIDO Pluggable Authentication

仅支持MySQL Enterprise

MySQL 8.0.27及更高版本中可用,FIDO身份验证允许使用智能卡、安全密钥和生物识别阅读器等设备进行身份验证

Test Pluggable Authentication

MySQL包含一个测试插件,用于检查帐户凭据,并将成功或失败记录到服务器错误日志中。

Native Pluggable Authentication

MySQL包含一个 mysql_native_password 插件,用于实现本机身份验证;也就是说,基于在引入可插拔身份验证之前使用的密码哈希方法的身份验证。

插件和库名称

插件或文件

插件或文件名称

Server-side plugin

mysql_native_password

Client-side plugin

mysql_native_password

Library file

None (plugins are built in)

安装 Native Pluggable Authentication

mysql_native_password 插件以服务器和客户端形式存在:

● 服务器端插件内置于服务器中,不需要显式加载,也不能通过卸载来禁用。

● 客户端插件内置于 libmysqlclient 客户端库中,可用于任何链接到 libmysqlclient 的程序。

使用 Native Pluggable Authentication

MySQL客户端程序默认使用 mysql_native_password --default-auth 选项可以用作程序预期使用的客户端插件的提示

mysql --default-auth=mysql_native_password



mysql.user.authentication_string 字段采用的如下方式生成: SHA1( SHA1( password ) )

由于 mysql_native_password 在 mysql.user 表中 authentication_string 字段存储的是两次哈希 SHA1(SHA1(password)) 计算的值 ,如果用户密码相同,密码哈希值也相同

CREATE USER 'mysql_native_password_test_user1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Test_1qaz';
CREATE USER 'mysql_native_password_test_user2'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Test_1qaz';
SELECT user,plugin, authentication_string FROM mysql.user WHERE user like 'mysql_native_password_test_user%';
+-----------------------------------+-----------------------+--------------------------------------------+
| user | plugin | authentication_string |
+-----------------------------------+-----------------------+--------------------------------------------+
| mysql_native_password_test_user1 | mysql_native_password | *F69139585CC832C9D28D62F395D9291C1CA4D41B |
| mysql_native_password_test_user2 | mysql_native_password | *F69139585CC832C9D28D62F395D9291C1CA4D41B |
+-----------------------------------+-----------------------+--------------------------------------------+

备注

美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)建议SHA-1哈希算法的用户尽快迁移到更安全的SHA-2和SHA-3算法。最迟不晚于2030年12月31号。对于国外大的科技公司,如:Meta,谷歌,微软,Mozilla等在2015年时就差不多完成了对SHA-1算法的升级改造.2017时所有的主流浏览器不再将基于SHA-1的数字证书视为安全证书。因为SHA1和其他哈希算法(例如 MD5)可以很容易就预先计算好常见词语的哈希结果词典,如:字典破解(Dictionary Attack)和暴力破解(Brute Force Attack)方式,匹配到密码。并且很多案例已被证明非常容易破解。

猜你喜欢

转载自blog.csdn.net/weixin_44496870/article/details/131072108