MySQL8认证插件——Test Pluggable Authentication

MySQL包含一个测试插件,用于检查账户凭据并将成功或失败记录到服务器错误日志中。这是一个可加载的插件(不是内置的),必须在使用前安装。

与内置的本地插件不同,测试插件的源代码与服务器源代码是分开的,因此可以将其作为一个相对简单的示例进行检查,演示如何编写可加载的身份验证插件。

说明:此插件用于测试和开发目的,不用于生产环境或暴露于公共网络的服务器。

插件和库名称

插件或文件

插件或文件名称

Server-side plugin

test_plugin_server

Client-side plugin

auth_test_plugin

Library file

auth_test_plugin.so

安装测试可插拔身份验证

要供服务器使用,插件库文件必须位于MySQL插件目录(由 plugin_dir 系统变量命名的目录)中。如有必要,通过在服务器启动时设置 plugin_dir 的值来配置插件目录位置。

要在服务器启动时加载插件,请使用 --plugin-load-add 选项命名包含该插件的库文件。使用此插件加载方法,每次服务器启动时都必须给定该选项。例如,将这些行放在服务器my.cnf文件中,根据需要调整平台的.so后缀:

[mysqld]
plugin-load-add=auth_test_plugin.so

修改my.cnf后,重新启动服务器以使新设置生效。

或者,要在运行时加载插件,请使用以下语句,根据需要调整平台的.so后缀:

INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';

INSTALL PLUGIN 立即加载插件,并将其注册在 mysql.plugins 系统表中,以使服务器在每次后续正常启动时加载它,而不需要 --plugin-load-add

要验证插件安装,请检查Information Schema PLUGINS表或使用SHOW PLUGINS语句。例如:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%test_plugin%';
+--------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+--------------------+---------------+
| test_plugin_server | ACTIVE |
+--------------------+---------------+

如果插件无法初始化,请查看服务器错误日志中的诊断消息。

卸载测试可插入身份验证

用于卸载测试身份验证插件的方法取决于您的安装方式:

如果您在服务器启动时使用 --plugin-load-add 选项安装了插件,请在不使用该选项的情况下重新启动服务器。

如果您在运行时使用 INSTALL PLUGIN 语句安装插件,那么它将在服务器重新启动时保持安装状态。要卸载它,请使用 UNINSTALL PLUGIN:

UNINSTALL PLUGIN test_plugin_server;

使用测试可插拔身份验证

要使用测试身份验证插件,创建一个账户并在 IDENTIFIED WITH 子句中命名该插件:

CREATE USER 'testuser'@'localhost' IDENTIFIED WITH test_plugin_server BY 'testpassword';

测试身份验证插件还需要创建一个代理用户,如下所示:

CREATE USER testpassword@localhost;
GRANT PROXY ON testpassword@localhost TO testuser@localhost;

然后在连接到服务器时为该账户提供 --user 和 --password 选项。例如:

$> mysql --user=testuser --password
Enter password: testpassword

插件从客户端获取收到的密码,并将其与存储在 mysql.user 系统表中账户行的 authentication_string 列中的值进行比较。如果这两个值匹配,插件将返回 authentication_string 值作为新的有效用户ID。

您可以在服务器错误日志中查找指示身份验证是否成功的消息(请注意,password is reported as the “user”):

[Note] Plugin test_plugin_server reported:

'successfully authenticated user testpassword'

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贺浦力特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值