2013-05-10 23 views
14

嘗試使用Windows OBDC驅動程序連接到MySQL數據庫時出現問題。有很多關於顯而易見的搜索點擊...人們使用舊版本,但是,我不是。使用舊的(4.1.1之前的)身份驗證協議拒絕連接(客戶端選項'secure_auth'已啓用)

的mysqld是在CentOS 6.4 32位

./usr/libexec/mysqld Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution) 

enter image description here

所以我不知所措我明白任何地方預4.1.1協議是從哪裏來的。有任何想法嗎?

回答

10

我想,如果你問正確的問題,它更容易找到答案。

在這種情況下,「我的」問題與密碼如何散列並存儲在數據庫中有關。舊版密碼的存儲時間較短,現在已棄用。

幾個重點:

mysql_upgrade不能和不升級的密碼,也不會在某些版本警告它,請參閱:http://bugs.mysql.com/bug.php?id=65461

即使它主要是最新的服務器和客戶端,只需要一箇舊式客戶端來創建舊密碼,然後無論客戶端嘗試使用它,該帳戶都會遇到問題。

不同的版本對待這種情況的方式不同,因此您可以在數據庫中使用一些傳統密碼,然後突然無緣無故地停止某些帳戶的工作......這是因爲不同版本選擇處理情況。

您無法升級密碼。你必須知道他們是什麼,你必須改變它們。

編輯:爲了更清楚地說明,您必須使用使用較長哈希的新客戶端更改使用較短哈希存儲的密碼。通過這樣做,您將使用較長的散列編寫該帳戶密碼,此時沒有任何內容應該標記嘗試訪問該帳戶。如果問題經常出現,您應該在您的站點上尋找舊的客戶端,這些客戶端仍在使用不推薦使用的哈希長度來編寫密碼。

+0

我不熟悉復位內MySQL的密碼,發現通過以下網址一個很好的例子: HTTP:// www.cyberciti.biz/faq/mysql-change-user-password/ – Jeff 2013-10-30 16:44:54

+0

如果您對命令行[phpMyAdmin](http://www.phpmyadmin.net/home_page/index.php)不滿意,我不希望沒有生活。 – tlum 2013-10-30 20:35:13

+0

這與STW的答案結合在一起使我確信。 – Jason 2015-02-24 22:34:15

3

嘗試安裝舊版本驅動3.51.30:http://dev.mysql.com/downloads/connector/odbc/5.1.html#downloads 它適用於我的MySQL版本5.0.24a社區

+1

這並沒有真正解決這個問題,並且問題在於由舊版客戶端版本創建的某些用戶帳戶的棄用密碼哈希長度。降級客戶作爲解決方法是不真誠的。應更新此類帳戶以使用更安全的密碼散列。 – tlum 2013-07-01 13:45:09

+0

我可以證實這一點。 – 2013-09-18 15:41:46

0

我發現在任何情況下,另一種解決方案達到這個 - 很奇怪 -

  1. 安裝5.1 64位ODBC驅動程序 - 確認自身的ODBC連接工作,如果你可以連接,那麼你應該能夠做#2
  2. 點擊鏈接服務器後 - 供應商 - 右鍵點擊MSDASQL,點擊屬性
    • 取消選中「Allow inprocess」 - 除非需要插入TEXT和NTEXT字段,否則這是一件好事。
  3. 創建你的鏈接服務器連接或測試你一直爭取與一個 - 笑

當我有「允許進程內」檢查我還有即使ODBC系統DSN工作的罰款錯誤。我假設,因爲我有5.2(與服務器運行良好)和5.1的服務器沒有混合,SQL是共享流程,因爲5.1驅動程序不會出現該錯誤。

+0

我相信我已經在下面說過了。 「不同的版本對待這種情況的方式不同,所以......」這不是一個解決方案,它只是在地毯下掃除問題。散列大小已棄用。較新的客戶不支持它。修復方法是使用支持的長度重寫已棄用長度的密碼。其他任何東西都只是一種解決方法,一種可能會一次又一次地回來並咬你或者別人的東西。或者,您已經設法找到一種新方法來生成與迄今爲止討論的問題完全無關的錯誤。 – tlum 2013-12-17 02:56:57

1

當遠程訪問我的MySQL數據庫時,我有類似的錯誤信息。使用Directadmin我輕鬆地按照上面的建議更改了MySql數據庫密碼。這會使用較新的散列方法自動生成密碼。這立即解決了遠程連接問題。

9

MySQL Workbench 6.08在管理服務器連接,連接選項卡,高級子選項卡中必須勾選'使用舊認證協議'。

+1

這對於MySQL Workbench來說非常棒 - 對於ODBC連接器來說總是很失敗 – STW 2014-08-25 21:20:52

+1

這個問題根本與MySQL Workbench無關。 – PhilS 2015-07-26 23:35:53

3

我在使用Windows的ODBC連接器連接到Percona 5.5服務器時遇到了這個問題。其中secure_auth已禁用。

從我發現ODBC連接器,不像MySql Workbench,不支持一個選項來驗證使用舊的16字節散列密碼的登錄。有關於此的錯誤報告,但似乎受讓人對功能請求感到困惑(請參閱bug #71234)。

我能夠更新MySQL的登錄使用這些命令使用新的41個字節的哈希:

set old_passwords=0; 
set password=password('yourpasswordhere'); 

正如我前面提到我們的服務器有secure_auth禁用,這似乎引起password()返回old_password()結果。運行set old_passwords=0;將啓用password()方法生成新的41字節散列(在會話期間)。

+0

謝謝,這是我需要適當地重置我們的密碼 – Jason 2015-02-24 22:33:26

相關問題