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

  論壇搭建完成後,本覺得能夠愉快地搞事了,沒想到次日一登陸 duang~ Big Suprisej_0004.gifmysql

9ff71d45df99259fbf0770333daa63bd.jpg-wh_

重啓Apache...無效sql

重啓MySQL...無效數據庫

重啓PHP服務...無效安全

重啓服務器...無效服務器

i_f34.gif

得,有的忙了...ssh

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

再次看了一下報錯代碼測試

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

2:_init_db()方法報錯 //初始化數據庫3d

第四行和第五行都是數據庫鏈接報錯,至此都能看出來應該是Discuz無法正常鏈接MySQL數據庫致使的

接着百度,重點看那些和數據庫鏈接有關的帖子

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

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

首先在ssh客戶端試試能不能鏈接數據庫

92fb7da736fbe255c1e9e7178ead1dd1.jpg-wh_

結果還真是無法鏈接,看到文章中說用戶的主機域爲%

忽然想起來以前搭建論壇的時候爲了方便管理數據庫,準備用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

a2f9c14857a19e0d94e86ed4e0fd7900.jpg-wh_

提交之,接着systemctl restart mysql重啓mysql服務

8181ac52a56c9959d8ab941c111f6520.jpg-wh_

t_0001.gif

關於這個問題解釋是

「部分版本的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服務而後測試鏈接

重啓鏈接正常

e8f6744e3ec317aba1df9c49912239fb.jpg-wh_


附:

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:以上流程對本人測試環境可用,不保證全部狀況下均有效)

相關文章
相關標籤/搜索