網站報錯Access denied for user 'root'@'localhost' -問題排查續


網站報錯Access denied for user 'root'@'localhost' (using password: YES)

每次的挽救辦法就是:

/etc/init.d/mysqld stop

mysqld_safe --skip-grant-tables &

幾乎每隔10分鍾就出現一次,如下圖,然后手動安全模式重啟mysql。偶的內心好崩潰。。。

不得不贊阿里雲的售后技術支持太給力!耐心回復我的一個個小白問題。

總結一下,

問題原因:本地授權問題

解決辦法:“您目前啟動到mysql安全模式下,您登陸mysql,重新授權一下,允許root賬號從本地登陸mysql。授權完成后您再按照之前給您說的步驟,正常啟動mysql即可”

 

解決過程,具體展開解釋如下:

1. 安全模式啟動mysql

/etc/init.d/mysqld stop

mysqld_safe --skip-grant-tables &

 

2. 進入mysql命令行,#mysql   (安全模式不需要密碼即可登錄mysql,開始偶還嚇尿了。。。囧。。。)

3. 更改root用戶的密碼

     mysql>UPDATE mysql.user SET Password = password ( 'fxs_415700' ) WHERE User = 'root' ;   

     對sql語句的執行一定要加分號(囧。。。多年不寫SQL代碼)

     不妨用查詢語句暖場 select User,Host from mysql.user WHERE User = 'root'; 查出了三條記錄

4. 更改root用戶的“host”值,已確保本地被授權

    mysql>update mysql.user set host='localhost' where user='root';

  (此步實際執行有錯,因為host是鍵值,故上述select語句有必要,尤其是當沒使用第三方mysql工具譬如sequel pro的話)

5. mysql>flush privileges ; 

6. 退出mysql 

    mysql>quit

7. 停止mysql, 並查看是否還有mysql進程,有的話kill掉

   #  /etc/init.d/mysqld stop 

   通過 ps aux | grep mysql 查看mysql進程id 

   # ps aux | grep mysql
   root 4043 0.0 0.0 63852 1252 pts/0 S 17:20 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables
   mysql 4234 23.7 1.0 228300 21992 pts/0 Sl 17:20 7:24 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-     dir=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock

   查得進程ID,kill掉
   # kill -9 4043
   # kill -9 4234

8. 啟動mysql

   #/etc/init.d/mysqld start 

 

(當時因為sql語句沒加;即本地授權操作3、4、5三步未執行成功,第8步執行完后,mysql啟動,網站access deny錯誤依舊)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM