Mysql

未載入mysql身份驗證外掛

  • December 8, 2021

問題:

在mysql中設置使用者時遇到登錄問題。老使用者可以按預期登錄,對於新創建的使用者,我無法登錄並收到錯誤消息。

執行的SQL:

CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON somedb.* TO 'monty'@'%';
FLUSH PRIVILEGES;

預期: 我現在希望被允許從我的客戶端程式碼以使用者 monty 身份登錄(適用於現有使用者)。

**錯誤:**登錄失敗並在我的客戶端程式碼中顯示以下錯誤消息:

SQLSTATE[HY000] [1524] Plugin '*937217B9DD8E6E458FC3F434BB7292891****' is not loaded'

更多細節

當我檢查 mysql.user 表時,我看到外掛列包含使用者的雜湊密碼,即 937217B9DD8E6E458FC3F434BB7292891****.

因此,我假設 auth 外掛存在錯誤並遵循遷移指南(https://dev.mysql.com/doc/refman/5.6/en/account-upgrades.html)。

改變使用者

ALTER USER 'monty'@'%' IDENTIFIED WITH mysql_native_password BY 'some_pass';

有幫助。但是,一旦我執行flush privileges登錄操作,就會再次失敗。

涉及的系統是從 mysql/mysql-server 建構的 docker 容器。

mysql  Ver 14.14 Distrib 5.7.11, for Linux (x86_64) using  EditLine wrapper

unname -a:

Linux 1046ac1aaeee 4.2.0-27-generic 
#32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

mysql 身份驗證變數

mysql> show variables like '%auth'
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
| secure_auth                   | ON                    |
+-------------------------------+-----------------------+
2 rows in set (0.00 sec)

問題

如何讓新創建的使用者登錄永久工作(即使在刷新權限之後)?

原來這是因為我在使用最新的 mysql 版本重建 docker 容器後忘記在數據庫上執行 mysql_upgrade。

執行 mysql_upgrade 後,一切都按預期工作。更多資訊可以在這裡找到。https://bugs.mysql.com/bug.php?id=79622

這個問題在**這裡**解釋。

執行mysql_upgrade -u root -p以解決問題。

或者

如果您正在創建使用者並遇到此問題,請在查詢中使用BY而不是WITH 。

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'xyz';

引用自:https://serverfault.com/questions/761001