3 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您無法控制服務(wù)器
我剛遇到這個(gè)問題,并且能夠解決它。
首先,使用不關(guān)心old_passwords的舊客戶端連接到MySQL數(shù)據(jù)庫。使用您的腳本將使用的用戶進(jìn)行連接。
運(yùn)行以下查詢:
SET SESSION old_passwords=FALSE;
SET PASSWORD = PASSWORD('[your password]');
在您的PHP腳本中,更改mysql_connect函數(shù)以包括客戶端標(biāo)志1:
define('CLIENT_LONG_PASSWORD', 1);
mysql_connect('[your server]', '[your username]', '[your password]', false, CLIENT_LONG_PASSWORD);
這使我可以成功連接。
編輯:根據(jù)Garland Pope的評(píng)論,從PHP 5.4起,可能不需要在您的PHP代碼中手動(dòng)設(shè)置CLIENT_LONG_PASSWORD了!
編輯:由Antonio Bonifati提供,PHP腳本可以為您運(yùn)行查詢:
<?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貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以在mysql查詢?yōu)g覽器上執(zhí)行這些操作
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;
注意:您的用戶名和密碼
之后,它應(yīng)該能夠工作。我也解決了我的問題
添加回答
舉報(bào)