解決wordpress提示Error establishing a database connection的辦法

在網上搜索了不少的方法都沒解決,但我們看上去錯誤提示應該是數據庫配置的問題了,經過我反覆的排查及網上文件參考還是解決了此問題,下面我們一起來看解決辦法。

打開 wordpress提示

“Error establishing a database connection ”,這段話意思是連接數據時出現錯誤。

找到下面這些:

代碼如下
/** WordPress數據庫的名稱,替換掉 “putyourdbnamehere” */
define('DB_NAME', 'wordpress');
/** MySQL數據庫用戶名,替換掉 “usernamehere” */
define('DB_USER', 'root');
/** MySQL數據庫密碼,替換掉 “yourpasswordhere” */
define('DB_PASSWORD', 'root');
/** MySQL主機名 */
define('DB_HOST', 'localhost');
DB_NAME爲WordPress數據庫的名稱
DB_USER爲MySQL數據庫用戶名
DB_PASSWORD爲MySQL數據庫密碼
DB_HOST爲MySQL主機名,一般默認localhost不用修改,特殊的可以修改成 localhost:3306/wordpress 這種形式

但還是解決不了於是就有了下面的解決過程,WORDPRESS出現這種情況的原因可能是:

1、無法連接到Wordpress使用的數據庫。

你的wp-config.php中的數據庫用戶名和密碼錯誤,或者你的數據庫所在服務器掛掉了!也有可能是服務商短時間內限制(訪問量突然暴漲的博客或使用一些消耗數據庫連接的WP插件)。

解決辦法是,確認wp-config.php中的用戶名和密碼信息正確。確認WP使用的數據庫服務器沒有掛掉(可以ping或直接重啓?!)。確認數據庫連接方式,是遠程連接還是本地連接,有些配置的遠程連接的可能出現連不上數據庫的情況,也就會出現這個“Error establishing a database connection”提示,一般虛擬空間(GD的空間使用的遠程數據庫連接)或合租空間都是使用的本地連接(localhost)。

2、若服務器數據庫是剛剛升級到 mysql 5.0 以上,之前WP博客正常可訪問。

這可能是由於mysql 5.0採用了一種新的密碼驗證機制,這需要客戶端的版本要在4.0以上(PHP中的MYSQL客戶端可以查看phpinfo得到),連接數據庫時是用舊的密碼機制,這會出現“Client does not support authentication protocol requested by server” 這樣的錯誤提示,wordpress中就提示“Error establishing a database connection (可能密碼錯誤)”。

解決辦法:

方法1、在mysql中爲wordpress數據庫新建一個控制賬戶,然後修改wp-config.php中的數據庫用戶名和密碼配置信息即可。方便簡單!!

方法2、在mysql下:

代碼如下

mysql> SET PASSWORD FOR
-> ‘clin003′@’clin003.com’ = OLD_PASSWORD(‘newpwd’);
mysql> FLUSH PRIVILEGES;

這裏的clin003替換成使用wordpress數據庫的用戶名,clin003.com替換成localhost或者某個域名,newpwd是該用戶對應的密碼。

還有一點是,查看phpinfo(),找MYSQL_SOCKET顯示的mysql.sock的路徑,確認mysql.sock的確在此路徑下,否則需要做一個符號鏈接。比如phpinfo裏顯示MYSQL_SOCKET路徑爲/var/lib/mysql/mysql.sock,但實際上位於 /tmp/mysql.sock,可在命令行輸入:

代碼如下

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

3、mysql服務設置不當,導致mysql連接數量超過限定值,或者應用程序設計有問題,導致大量休眠連接不能及時釋放。

解決辦法:

登陸mysql服務器

代碼如下

mysql -u root -p

使用命令

show processlist;

查看當前連接數量,如果進程過多,或存在大量超時的休眠sleep連接,編輯

代碼如下

/etc/mysql/my.cnf

vim /etc/mysql/my.cnf

在[mysqld]字段處,添加,或去掉註釋

max_connections = 500 #增加mysql連接數

wait_timeout = 10 #斷開超過10秒的連接

4、是wp_options數據庫表錯誤,我把整個數據庫表修復和優化了一次

wp_options中的表前綴wp根據自己實際情況查看!

WORDPRESS出現錯誤時,可以通過 DEBUG 參數調試:
根據Wp-config.php的調試功能排錯

1、在 wp-config.php 有個 debug 的參數,打開這個參數,修改爲:

define(‘WP_DEBUG’, ‘true’);

2、根據報錯提示解決問題,比如以下錯誤:

WordPress database error: [Table './clin003_com/wp_options' is marked as crashed and should be repaired]
SELECT autoload FROM wp_options WHERE option_name = ‘_transient_doing_cron’

WordPress database error: [Table './clin003_com/wp_options' is marked as crashed and should be repaired]
SELECT autoload FROM wp_options WHERE option_name = ‘_transient_timeout_doing_cron’

WordPress database error: [Table './clin003_com/wp_options' is marked as crashed and should be repaired]
SELECT option_value FROM wp_options WHERE option_name = ‘_transient_doing_cron’ LIMIT 1

wp_options 表壞了,需要被修復,使用 mysql 客戶端。
進 mysql 使用修復的命令修復:

代碼如下
mysql>repair table wp_options;

也可以通過phpMyAdmin來進行修復。

3、問題解決,關掉 DEBUG。

根據mysql的日誌記錄排錯

在mysql的log日誌文件

代碼如下

mysql/data/

裏面找到一個.err結尾的文件,打開。看見了一排

‘.\clin003_com\wp_options’ is marked as crashed and should be repaired
‘.\clin003_com\wp_options’ is marked as crashed and should be repaired
‘.\clin003_com\wp_options’ is marked as crashed and should be repaired

修復辦法參考上面!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章