阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

164次阅读
没有评论

共计 2273 个字符,预计需要花费 6 分钟才能阅读完成。

最新的 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 -i 8.0 -P 20804
$ sed -Ei ‘s/^(default_authentication_plugin=mysql_native_password)/#\1/’ my.sandbox.cnf

在启动实例之后,我创建了快速测试用例。这将安装 auth_socket 插件并创建一个用户来使用它来标识自己:

mysql [localhost] {root} ((none)) > show global variables like ‘default_authentication_plugin’;
+——————————-+———————–+
| Variable_name                | Value                |
+——————————-+———————–+
| default_authentication_plugin | caching_sha2_password |
+——————————-+———————–+
1 row in set (0.00 sec)
mysql [localhost] {root} ((none)) > install plugin auth_socket soname ‘auth_socket.so’;
Query OK, 0 rows affected (0.02 sec)
mysql [localhost] {root} ((none)) > create user ceri@localhost identified with auth_socket;
Query OK, 0 rows affected (0.04 sec)
mysql [localhost] {root} ((none)) > grant all on *.* to ceri@localhost;
Query OK, 0 rows affected (0.03 sec)

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

 $ ./use -uceri
ERROR 2000 (HY000): Unknown MySQL error

通过使用 5.7 客户机(一个握手错误),我们可以看到预期的错误消息:

 $ ~/opt/mysql/mysql_5.7.20/bin/mysql –defaults-file=./my.sandbox.cnf -uceri
ERROR 2012 (HY000): Error in server handshake

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

MySQL 8.0.4 RC 发布,亮点很多 http://www.linuxidc.com/Linux/2018-01/150630.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2273字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中