码迷,mamicode.com
首页 > 数据库 > 详细

网站报错Access denied for user 'root'@'localhost' -问题排查续

时间:2015-04-16 19:47:30      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

网站报错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错误依旧)

网站报错Access denied for user 'root'@'localhost' -问题排查续

标签:

原文地址:http://www.cnblogs.com/luowei/p/4432907.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!