簡體   English   中英

PHP 5.4 PDO無法使用舊的不安全身份驗證連接到MySQL 4.1+

[英]PHP 5.4 PDO could not connect to MySQL 4.1+ using the old insecure authentication

我知道有一些類似的問題,事實上我已經閱讀了所有(9)個問題。

但是,它們都沒有解決我的問題。

我有一個共享托管包(最低限度)。 我的包中包含的是域名,以及托管MySQL服務器的單獨IP地址。 對於開發,我使用http://localhost/與PHP 5.4的開發服務器,我正在使用我的托管包中的MySQL服務器。

問題出現在我的電腦上,因為我安裝了PHP 5.4,但是我的網絡主機安裝了PHP 5.2.17並且不會升級。 MySQL服務器在MySQL 5.1.50上。

幸運的是,phpMyAdmin具有內置的“更改密碼”功能。

phpMyAdmin中有兩個用於更改密碼的哈希選項:

  • MySQL 4.1+
  • MySQL 4.0兼容

我使用MySQL 4.1+選項更改了密碼,並確認更新成功。

該個人資料已更新。 SET PASSWORD = PASSWORD( '***' )

但是,當我執行此查詢時:

SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));

它告訴我密碼長度仍然是16.輸出:

 1 1 16 

所以問題仍然存在。

無法連接到數據庫。 SQLSTATE [HY000] [2000] mysqlnd無法使用舊的不安全身份驗證連接到MySQL 4.1+。 請使用管理工具使用命令SET PASSWORD = PASSWORD('your_existing_password')重置密碼。 這將在mysql.user中存儲一個新的,更安全的哈希值。 如果在PHP 5.2或更早版本執行的其他腳本中使用此用戶,則可能需要從my.cnf文件中刪除舊密碼標志

當我在phpMyAdmin中使用DBO用戶登錄時,我也嘗試過這些查詢:

SET SESSION old_passwords=0; 
[phpMyAdmin reloads to the home screen, but the value remains = 1]

SET GLOBAL old_passwords = 0;
#1227 - Access denied; you need the SUPER privilege for this operation

FLUSH PRIVILEGES;
#1227 - Access denied; you need the RELOAD privilege for this operation

這與用於設置DBO用戶的webhost菜單中所述的內容相矛盾:

數據庫所有者
創建新數據庫時,需要指定數據庫所有者(DBO)用戶
完全管理員訪問數據庫。

這是我必須接受我的虛擬主機嗎? 或者可以由我的DBO用戶解決? 否則可以在PHP中繞過它? (因為它適用於PHP 5.2.17但不適用於PHP 5.4)

解決了!

雖然SET SESSION old_passwords=0; 沒有在phpMyAdmin中工作。

我下載了MySQL GUI Tools並使用MySQL Query Browser在非DBO用戶上執行相同的命令:

SET SESSION old_passwords = 0;

SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));

現在回來了:

1      0      41

所以我只是更改了密碼:

SET PASSWORD = PASSWORD('my_old_password')

現在PHP 5.4 PDO與該用戶連接到數據庫!

phpMyAdmin ,設置會話變量將起作用,但是對密碼函數的調用必須在同一會話/執行中進行。

例如,如果我執行:

SET SESSION old_passwords = 0;
SET PASSWORD = PASSWORD('notagoodpassword');

它會正確設置它。

此解決方案有效:SET SESSION old_passwords = 0;

但是:我不得不放棄“舊的”用戶凍結表並創建它 - 然后它就像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM