mysql8.0.4.rc_MySQL 8.0.4 RC: 使用 auth_socket 用户要小心!

严朝明
2023-12-01

MySQL 8.0.4 RC: 使用 auth_socket 用户要小心!

最新的 MySQL 8.0.4 RC(候选版) 发布的消息的确令人兴奋 不幸的是对于 auth_socket 插件的用户来说, 危险正在等待中!

早在 2015 年 11 月, 就有报告使用 sha256_password 进行 auth_socket 身份验证失败这防止在 SHA256 认证之后用 auth_socket 插件识别的用户进行缺省认证方法在 MySQL 8.0.4 RC 中, default_authentication_plugin 被更改为 caching_sha2_password, 不知道他们是否解决了这个 bug

测试的源代码是从 dev.mysql.com 下载的, 并使用发布选项进行编译 一些选项被禁用, 以减少构建时间, 以及设置路径前缀, 并确保使用本地的 OpenSSL 库::version="$(basename $(pwd))";

prefix="/home/ceri/opt/mysql/${version}";

cmake.-DBUILD_CONFIG=mysql_release \

-DCMAKE_INSTALL_PREFIX:PATH="${prefix}"\

-DMYSQL_DATADIR:PATH="${prefix}/data"\

-DWITH_SSL:STRING=system \

-DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=OFF \

-DWITH_EMBEDDED_SERVER:BOOL=OFF \

-DWITH_EXTRA_CHARSETS:STRING=""\

-DWITH_FEDERATED_STORAGE_ENGINE:BOOL=OFF \

-DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=OFF \

-DWITH_BOOST="./$(find boost/ -maxdepth 1 -type d -not -name boost)"

在完成构建和构建测试之后, MySQL Sandbox 用来创建一个测试实例, 使用 low_level_make_sandbox 命令来获得一些额外的控制之后, 有必要恢复 default_authentication_plugin, 因为它在安装过程中更改为 mysql_native_password:$ low_level_make_sandbox-d mysql-8.0.4-rc--datadir_from=script \

-b~/opt/mysql/mysql-8.0.4-rc-i8.0-P20804

$ sed-Ei's/^(default_authentication_plugin=mysql_native_password)/#\1/'my.sandbox.cnf

在启动实例之后, 我创建了快速测试用例这将安装 auth_socket 插件并创建一个用户来使用它来标识自己:mysql[localhost]{root}((none))>showglobalvariables like'default_authentication_plugin';

+-------------------------------+-----------------------+

|Variable_name|Value|

+-------------------------------+-----------------------+

|default_authentication_plugin|caching_sha2_password|

+-------------------------------+-----------------------+

1rowinset(0.00sec)

mysql[localhost]{root}((none))>install plugin auth_socket soname'auth_socket.so';

QueryOK,0rows affected(0.02sec)

mysql[localhost]{root}((none))>create user ceri@localhost identifiedwithauth_socket;

QueryOK,0rows affected(0.04sec)

mysql[localhost]{root}((none))>grant all on*.*to ceri@localhost;

QueryOK,0rows affected(0.03sec)

不幸的是, 当我试图通过这个新用户连接时, 一个熟悉的结果尽管有趣的是, 一个新的错误消息!$./use-uceri

ERROR2000(HY000):UnknownMySQLerror

通过使用 5.7 客户机 (一个握手错误), 我们可以看到预期的错误消息:$~/opt/mysql/mysql_5.7.20/bin/mysql--defaults-file=./my.sandbox.cnf-uceri

ERROR2012(HY000):Errorinserver handshake

虽然在 MySQL 8.0.4 RC 中有许多重大的改进和新特性, 但是使用 auth_socket 插件的任何系统都需要确保它们强制使用 default_authentication_plugin=mysql_native_password 至少现在是这样

来源: http://www.linuxidc.com/Linux/2018-01/150629.htm

 类似资料: