3 回答

TA貢獻2080條經驗 獲得超4個贊
如果您無法控制服務器
我剛遇到這個問題,并且能夠解決它。
首先,使用不關心old_passwords的舊客戶端連接到MySQL數據庫。使用您的腳本將使用的用戶進行連接。
運行以下查詢:
SET SESSION old_passwords=FALSE;
SET PASSWORD = PASSWORD('[your password]');
在您的PHP腳本中,更改mysql_connect函數以包括客戶端標志1:
define('CLIENT_LONG_PASSWORD', 1);
mysql_connect('[your server]', '[your username]', '[your password]', false, CLIENT_LONG_PASSWORD);
這使我可以成功連接。
編輯:根據Garland Pope的評論,從PHP 5.4起,可能不需要在您的PHP代碼中手動設置CLIENT_LONG_PASSWORD了!
編輯:由Antonio Bonifati提供,PHP腳本可以為您運行查詢:
<?php const DB = [ 'host' => '...', # localhost may not work on some hosting
'user' => '...',
'pwd' => '...', ];
if (!mysql_connect(DB['host'], DB['user'], DB['pwd'])) {
die(mysql_error());
} if (!mysql_query($query = 'SET SESSION old_passwords=FALSE')) {
die($query);
} if (!mysql_query($query = "SET PASSWORD = PASSWORD('" . DB['pwd'] . "')")) {
die($query);
}
echo "Excellent, mysqli will now work";
?>

TA貢獻1811條經驗 獲得超5個贊
您可以在mysql查詢瀏覽器上執行這些操作
SET old_passwords = 0;
UPDATE mysql.user SET Password = PASSWORD('testpass') WHERE User = 'testuser' limit 1;
SELECT LENGTH(Password) FROM mysql.user WHERE User = 'testuser';
FLUSH PRIVILEGES;
注意:您的用戶名和密碼
之后,它應該能夠工作。我也解決了我的問題
添加回答
舉報