mysql企业版安装身份验证_MySQL身份验证——Pluggable Authentication

本文介绍了MySQL的插件验证方式,这是实现访问控制的关键步骤。MySQL通过验证连接和请求验证来确保权限,其中插件验证在连接阶段发挥作用。讨论了多种验证插件,如caching_sha2_password(MySQL8.0默认)、mysql_native_password和外部验证插件。插件验证允许DBA为不同用户选择不同验证方式,并支持代理用户。文章还提到了版本兼容性问题,强调了社区版与企业版客户端的差异。
摘要由CSDN通过智能技术生成

写一篇关于MySQL身份验证的内容,在这一篇里主要介绍MySQL的插件验证方式。

在介绍插件验证方式之前,简要说明一下MySQL的访问控制是如何实现的。

MySQL的访问控制通过两个步骤来实现:

一、验证连接:在这个步骤里包括对帐户和密码是否正确进行验证以及账户是否被锁定。如果没有通过验证,则服务器拒绝访问,反之进入第二步。

二、请求验证:在这个步骤里,服务器对用户发出的每个操作请求进行检查,确认该账户是否有权去执行该操作。

因此,使用插件进行身份验证的过程,属于验证连接的步骤。当客户端连接到MySQL服务器时,服务器会使用客户端提供的用户名和主机名从mysql.user系统表里面查询匹配的记录,然后使用记录里面提供的验证插件对客户端进行验证:如果服务器无法找到所需验证插件,服务器拒绝客户端连接并报错。

如果服务器具有该插件,插件会返回服务器一个状态,表示用户是否提供了正确的密码,是否允许其进行连接。

MySQL使用插件方式进行验证可以带来如下好处:DBA可以为不同的用户选择不同的验证方式。

当客户端连接服务器时,可以选择外部验证的方式。外部验证方式是指密码等凭据信息没有保存在mysql.user系统表里,MySQL的原生验证方式是将相关数据保存在该表里。

使用插件式验证方式还可以允许使用代理用户,使得返回服务器的用户名与实际连接的用户名不同。

MySQL8.0目前提供如下验证插件:sha256_password和caching_sha2_password:MySQL提供两种使用SHA-256哈希方法的插件,其中caching_sha2_password是MySQL8.0的默认验证插件,它与sha256_password基本相同,但是会在服务器侧使用缓存,以获取更好的性能和额外的功能。

mysql_native_password:该插件将密码通过哈希方法存储在系统表里,是8.0之前的默认方式。

mysql_clear_password:该插件是内嵌到MySQL客户端里的,允许客户端以明文的形式发送密码到服务器,可以与任何需要明文密码的服务器端插件一起使用。

mysql_no_login:该插件可以阻止客户端直接登录服务器,使用它,系统可以限定使用代理用户,或者具有存储程序、视图权限的用户来访问数据库,从而不会将相关操作暴露给普通用户。

auth_socket:通过UNIX的sockets进行本地主机登录验证。

test_plugin_server :MySQL包含一个用于测试的插件,检查账户凭据,并将结果写入日志。

authentication_pam:使用PAM(Pluggable Authentication Modules)进行外部验证的插件,并且可以支持代理用户,该插件包含在MySQL的企业版内。

authentication_windows:允许在Windows上执行外部验证的插件,该插件包含在MySQL企业版内。

authentication_ldap_simple和authentication_ldap_sasl:支持使用LDAP (Lightweight Directory Access Protocol)对MySQL用户进行验证,该插件同样包含在企业版内。

通常,使用插件验证方式需要在服务器端和客户端安装相对应的插件。服务器端的插件会验证客户端的连接,客户端的插件通常会内嵌到客户端程序里。当客户端连接到服务器时,服务器会通知客户端应该使用哪个插件。用户创建账户时,需要指定服务器端适当的插件,如果使用默认的插件,则不需要指定。服务器可以通过--default-authentication-plugin=plugin_name来设置默认的插件。当服务器和客户端同时使用默认插件时,服务器不需要和客户端进行往返的通信。mysql和mysqladmin客户端可以使用--default-auth=plugin_name选项来指定使用的插件。如果客户端程序无法找到插件的库文件,可以通过--plugin-dir=dir_name来指定插件库文件位置。

插件验证方式允许为MySQL账户灵活选择验证方法,但是,有时候客户端无法通过插件进行连接,其原因是客户端与服务器的插件不兼容。当用户使用8.0的时候,发现之前正常使用的客户端无法进行连接,原因是使用5.7.22之前版本的客户端连接MySQL8.0时,需要使用caching_sha2_password进行验证,但是5.7版本的客户端不包括该插件,该插件是MySQL8.0首次引入的。(5.7.23之后的版本可以使用)同样的原因,MySQL5.5的客户端无法连接MySQL5.6服务器,因为sha256_password是在5.6引入的。另外一点需要注意的是,使用社区版的mysql客户端,无法通过企业版的LDAP插件连接企业版服务器。

关于插件验证的内容介绍到这里,更为详细的内容可以访问“https://dev.mysql.com/doc/refman/8.0/en/pluggable-authentication.html”

感谢您关注MySQL!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值