MySQL OCP888题解026-authentication plug-in(身份认证插件)

1、原题

1.1、英文原题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LmcOh3g9-1677144081536)(https://img-oddrock520.oss-cn-shanghai.aliyuncs.com/202302230842406.png)]
Due to an authentication plug-in that is used on the server, passwords are required to be sent as clear text as opposed to the usual encrypted format.
Which two methods would allow the mysgl client to connect to the server and send clear text passwords?
A. mysql --protocol=PLAIN -uroot -p -h dbhost.example.com
B. INSTALL PLUGIN mysql_cleartext_password SONAME ‘mysql_cleartext_password.so’;
C. export LIBMYSQL_ENABLE_CLEARTEXT PLUGIN=‘Y’
D. SET GLOBAL mysql_cleartext_passwords=1;
E. mysql --enable-cleartext-plugin -uroot -p -h dbhost.example.com

1.2、中文翻译

由于服务器上使用了身份验证插件,密码需要以明文形式发送,而不是通常的加密格式。
哪两种方法允许mysgl客户端连接到服务器并发送明文密码?
A. mysql --protocol=PLAIN -uroot -p -h dbhost.example.com
B. INSTALL PLUGIN mysql_cleartext_password SONAME ‘mysql_cleartext_password.so’;
C. export LIBMYSQL_ENABLE_CLEARTEXT PLUGIN=‘Y’
D. SET GLOBAL mysql_cleartext_passwords=1;
E. mysql --enable-cleartext-plugin -uroot -p -h dbhost.example.com

1.3、答案

C、E

2、题目解析

2.1、题干解析

本题考察的MySQL身份认证插件的使用。

2.2、选项解析

  1. mysql客户端的protocol协议是用来指定传输协议而不是加密协议的,传输协议只有TCP/IP、套接字、管道和共享内存四种形式,没有PLAIN这个选择,所以选项A错误。
  2. 客户端明文认证插件名称是mysql_clear_password而不是mysql_cleartext_password,所以选项B错误。
  3. 设置环境变量LIBMYSQL_ENABLE_CLEARTEXT为1,可以让客户端启用明文认证,所以选项C正确。
  4. mysql等客户端加一个–enable-cleartext-plugin选项,可以让客户端启用明文认证,所以选项E正确。

3、知识点

3.1、知识点1:MySQL客户端的连接传输协议

  1. 什么是MySQL客户端:MySQL客户端包括nysql、mysqldump等程序。
  2. 什么是连接传输协议:MySQL客户端支持基于几种传输协议与服务器的连接:TCP/IP、Unix套接字文件、命名管道和共享内存。
  3. 如何指定/选择传输协议
    • 协议隐式指定:对于一个给定的连接,如果没有明确指定传输协议,它将被隐式地确定。例如,在Unix和类似Unix的系统中,连接到localhost的结果是一个套接字文件连接,而在其他情况下则是一个连接到127.0.0.1的TCP/IP连接。
    • 通过–protocol选项显式指定:要明确指定协议,请使用 --protocol命令选项。下表显示了 --protocol的允许值,并指出每个值的适用平台。这些值是不区分大小写的。
  4. 对本地和远程连接的传输支持
    • TCP/IP支持与本地或远程MySQL服务器的连接。
    • 套接字、命名管道和共享内存只支持与本地MySQL服务器的连接。
  5. 加密和安全特性
    • TCP/IP连接在默认情况下是不安全的,但可以进行加密以使其安全,可以使用TLS/SSL加密。
    • 套接字文件连接在默认情况下是安全的。它们也可以被加密,但加密套接字文件连接不会使其更加安全,而且会增加CPU负载。
    • 命名的管道连接在默认情况下是不安全的,也不需要通过加密来使其安全。named_pipe_full_access_group系统变量可用来控制哪些MySQL用户被允许使用命名管道连接。
    • 命名管道和共享内存传输不受TLS/SSL加密的约束。
    • 如果require_secure_transport系统变量被启用,则服务器只允许使用某种形式的安全传输的连接。根据前面的说明,使用TLS/SSL加密的TCP/IP、套接字文件或共享内存的连接是安全的连接。没有使用TLS/SSL加密的TCP/IP连接和命名管道连接是不安全的。
  6. 连接压缩:所有的传输协议都要对客户端和服务器之间的通信使用压缩。如果对一个给定的连接同时使用压缩和加密,则压缩会在加密之前发生。

官方参考文档

3.2、Client-Side Cleartext Pluggable Authentication(客户端明文可插拔认证)

有一个客户端认证插件,使客户端能够以明文形式向服务器发送密码,而无需散列或加密。这个插件内置于MySQL客户端库中,插件名称是mysql_clear_password。许多客户端认证插件在客户端向服务器发送密码之前会对密码进行散列或加密。这使客户能够避免以明文形式发送密码。使用客户端的mysql_clear_password插件,它使客户端能够将密码作为明文发送到服务器。没有相应的服务器端插件。

为了使无意中使用mysql_clear_password插件的可能性降低,MySQL客户必须明确地启用它。这可以通过几种方式实现。

  • 将LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN环境变量设置为以1、Y或y开头的值,让所有客户端启用该插件。
  • mysql、mysqladmin和mysqlslap客户端程序(也包括mysqlcheck、mysqldump和mysqlshow,用于MySQL 5.7.10及更高版本)支持一个–enable-cleartext-plugin选项,该选项在每个任务的基础上启用该插件。
  • mysql_options() C API函数支持一个MYSQL_ENABLE_CLEARTEXT_PLUGIN选项,它在每个连接的基础上启用该插件。另外,任何使用libmysqlclient并读取选项文件的程序都可以通过在客户端库读取的选项组中包含一个enable-cleartext-plugin选项来启用该插件。所以选项E正确。

官方参考文档

3.3、知识点3:MySQL的插件

MySQL支持一个插件API,可以创建服务器插件。插件可以在服务器启动时加载,也可以在运行时加载和卸载,而无需重新启动服务器。这个接口支持的插件包括但不限于存储引擎、INFORMATION_SCHEMA表、全文分析器插件、分区支持和服务器扩展。

官方参考文档

4、总结

  1. MySQL的明文认证插件名为mysql_clear_password,可以通过mysql等客户端加一个–enable-cleartext-plugin选项来启用这个明文认证插件。
  2. MySQL的连接传输协议包括TCP/IP、套接字、管道和共享内存四种,其中TCP/IP既支持连接远程MySQL服务器,又支持连接本地MySQL服务器。共享内存方式只适用于Windows。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值