發(fā)布時間:2020-09-07
欄目:其他
早在2015年11月規模,就有報告使用sha256_password進行auth_socket身份驗證失敗近年來。這防止在SHA256認(rèn)證之后用auth_socket插件識別的用戶進行缺省認(rèn)證方法mysql文章入庫軟件。在MySQL 8.0.4 RC中發展目標奮鬥,default_authentication_plugin被更改為caching_sha2_password技術先進,不知道他們是否解決了這個bug。
測試的源代碼是從dev.mysql.com下載的延伸,并使用發(fā)布選項進行編譯認為。 一些選項被禁用,以減少構(gòu)建時間新趨勢,以及設(shè)置路徑前綴反應能力,并確保使用本地的OpenSSL庫::
version="$(basename $(pwd))";
prefix="/home/ceri/opt/mysql/${version}";
cmake . -DBUILD_CONFIG=mysql_release \
mysql文章入庫軟件-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)"
在完成構(gòu)建和構(gòu)建測試之后,MySQL Sandbox用來創(chuàng)建一個測試實例學習,使用low_level_make_sandbox命令來獲得一些額外的控制結構重塑。之后,有必要恢復(fù)default_authentication_pluginmysql文件入庫工具措施,因為它在安裝過程中更改為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
在啟動實例之后大大縮短,我創(chuàng)建了快速測試用例。這將安裝auth_socket插件并創(chuàng)建一個用戶來使用它來標(biāo)識自己:
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)
不幸的是緊密相關,當(dāng)我試圖通過這個新用戶連接時更默契了,一個熟悉的結(jié)果——盡管有趣的是,一個新的錯誤消息!
$ ./use -uceri
ERROR 2000 (HY000): Unknown MySQL error
通過使用5.7客戶機(一個握手錯誤)培訓,我們可以看到預(yù)期的錯誤消息:
$ ~/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插件的任何系統(tǒng)都需要確保它們強制使用default_authentication_plugin=mysql_native_password——至少現(xiàn)在是這樣mysql文章入庫軟件 。
文章地址:http://61py.com/article/other/MySQLRCsyauth_socketyhyxx.html