簡體   English   中英

共享服務器上的PHP 5.4舊身份驗證,無需編輯mysql服務器即可修復

[英]PHP 5.4 old auth on shared server, fixing without editing the mysql server

我剛剛將開發箱的PHP升級到了最新版本5.4.5 該開發機器連接到遠程MySQL服務器 ,該服務器位於我從托管公司租用的共享服務器上。

嘗試使用簡單的mysql_connect('myserver.com', 'user', 'password')連接到我的遠程MySQL服務器會導致以下錯誤:

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

根據建議,只需執行以下操作即可:

SET PASSWORD = PASSWORD('my-password');

不會改變任何東西。 執行時同樣如此

SET SESSION old_passwords=FALSE;

經過一番搜索后,我意識到我需要對MySQL服務器進行深度訪問才能解決此問題 ,而我沒有。 嘗試執行此查詢:

UPDATE mysql.user SET Password=PASSWORD('my-password')
  WHERE User='my_user' AND Host='my-server';
FLUSH PRIVILEGES;

只是給我以下錯誤:

1142-表'user'的用戶'u0112918'@'www10.aname.net'的UPDATE命令被拒絕

到目前為止,要求公司為我執行查詢的請求未成功。 所以我的問題是,是否可以在不涉及MySQL服務器的情況下在客戶端上解決此問題?

嗯,嘗試通過PhpMyAdmin之外的其他工具 (例如Mysql Workbench)或通過外殼執行以下查詢:

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

應該允許您更改自己的密碼,而在用戶表上沒有DML權限。

編輯:因為它不能解決問題-為數據庫啟用“只讀”時,您需要超級權限來更改(甚至是您自己的)密碼( http://dev.mysql.com/doc/refman/5.5/en /set-password.html

暫無
暫無

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

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