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

來源:互聯網
上載者:User

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 -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 發布,亮點很多

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.