論壇搭建完成後,本以為可以愉快地搞事了,沒想到第二天一登入 duang~ Big Suprise
重新開機Apache...無效
重新開機MySQL...無效
重新開機PHP服務...無效
重新開機伺服器...無效
得,有的忙了...
首先百度嘛,看看有撒子解決方案,結果一搜相關的網頁還不少,頓時有一種不祥的預感..可能得走彎路,最好還是縮小範圍吧
再次看了一下報錯代碼
1:init()方法報錯 //初始化功能
2:_init_db()方法報錯 //初始化資料庫
第四行和第五行都是資料庫連接配接報錯,至此都能看出來應該是Discuz沒法正常連接配接MySQL資料庫導緻的
接着百度,重點看那些和資料庫連接配接有關的文章
最終在http://www.haosblog.com/article/read?aid=510
這個blog上面找到和我類似的情況,而且還有解決方案,好,測試搞起
首先在ssh用戶端試試能不能連接配接資料庫
結果還真是沒法連接配接,看到文章中說使用者的主機域為%
突然想起來之前搭建論壇的時候為了友善管理資料庫,準備用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
送出之,接着systemctl restart mysql重新開機mysql服務
關于這個問題解釋是
“部分版本的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服務然後測試連接配接
重新開機連接配接正常
附:
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