論壇搭建完成後,本覺得能夠愉快地搞事了,沒想到次日一登陸 duang~ Big Suprisemysql
重啓Apache...無效sql
重啓MySQL...無效數據庫
重啓PHP服務...無效安全
重啓服務器...無效服務器
得,有的忙了...ssh
首先百度嘛,看看有撒子解決方案,結果一搜相關的網頁還很多,頓時有一種不祥的預感..可能得走彎路,最好仍是縮小範圍吧ide
再次看了一下報錯代碼測試
1:init()方法報錯 //初始化功能
this
2:_init_db()方法報錯 //初始化數據庫3d
第四行和第五行都是數據庫鏈接報錯,至此都能看出來應該是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:以上流程對本人測試環境可用,不保證全部狀況下均有效)