天天看點

Discuz論壇 啟動報錯(1045) notconnect 解決方法

  論壇搭建完成後,本以為可以愉快地搞事了,沒想到第二天一登入 duang~ Big Suprise

Discuz論壇 啟動報錯(1045) notconnect 解決方法
Discuz論壇 啟動報錯(1045) notconnect 解決方法

重新開機Apache...無效

重新開機MySQL...無效

重新開機PHP服務...無效

重新開機伺服器...無效

Discuz論壇 啟動報錯(1045) notconnect 解決方法

得,有的忙了...

首先百度嘛,看看有撒子解決方案,結果一搜相關的網頁還不少,頓時有一種不祥的預感..可能得走彎路,最好還是縮小範圍吧

Discuz論壇 啟動報錯(1045) notconnect 解決方法

再次看了一下報錯代碼

1:init()方法報錯  //初始化功能

2:_init_db()方法報錯 //初始化資料庫

第四行和第五行都是資料庫連接配接報錯,至此都能看出來應該是Discuz沒法正常連接配接MySQL資料庫導緻的

接着百度,重點看那些和資料庫連接配接有關的文章

最終在http://www.haosblog.com/article/read?aid=510

這個blog上面找到和我類似的情況,而且還有解決方案,好,測試搞起

首先在ssh用戶端試試能不能連接配接資料庫

Discuz論壇 啟動報錯(1045) notconnect 解決方法

結果還真是沒法連接配接,看到文章中說使用者的主機域為%

突然想起來之前搭建論壇的時候為了友善管理資料庫,準備用Navicat連接配接資料庫,結果一直報錯:

“host ... is not allowed to connect to this MySql server”

後來使用了改表法

mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>exit;
           

然後就可以用Navicat連接配接了,這麼一來應該就是這個通配符%的問題,好在Navicat還可以正常連接配接資料庫

于是進入mysql資料庫,user表中将root使用者的%修改為localhost

Discuz論壇 啟動報錯(1045) notconnect 解決方法

送出之,接着systemctl restart mysql重新開機mysql服務

Discuz論壇 啟動報錯(1045) notconnect 解決方法
Discuz論壇 啟動報錯(1045) notconnect 解決方法

關于這個問題解釋是

“部分版本的mysql中%不包括localhost,需要建立一個在localhost域授權的使用者”

But這樣的話...那我豈不是沒法用Navicat連接配接資料庫了?不行我拒絕

接着找方法

發現還有一種授權法,測試之(下面這個為允許所有主機連接配接,不安全實際不建議使用,還有其它兩種,下文附)

Shell>mysql -u root -p"yourpassword" 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;                      //授權root使用者在任意IP均可登入
mysql>FLUSH PRIVILEGES;           //重新整理權限
mysql>exit
           

改完之後用Navicat測試可以連接配接,為了確定萬一,重新開機MySQL服務然後測試連接配接

重新開機連接配接正常

Discuz論壇 啟動報錯(1045) notconnect 解決方法

附:

1:你想user使用yourpassword從任何主機連接配接到mysql伺服器的話。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
           

2:如果你想允許使用者user從ip為192.168.1.6的主機連接配接到mysql伺服器,并使用yourpassword作為密碼

mysql>GRANT ALL PRIVILEGES ON *.* TO 'user'@'192.168.1.3' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
           

3:如果你想允許使用者user從ip為192.168.1.6的主機連接配接到mysql伺服器的test資料庫,并使用yourpassword作為密碼

mysql>GRANT ALL PRIVILEGES ON test.* TO 'user'@'192.168.1.3' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
           

---END---

(Tip:以上流程對本人測試環境可用,不保證所有情況下均有效)

轉載于:https://blog.51cto.com/mikeyoo/1977336