ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 问题

  昨晚遇到的数据库问题一直没有找到解决方法,今天早晨来了,重新google一下,然后再按照步骤执行以下,发下ok了。呵呵。步骤如下:

# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root' and host='root' or host='localhost';//把空的用户密码都修改成非空的密码就行了。
mysql> FLUSH PRIVILEGES;
mysql> quit

# /etc/init.d/mysqld restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>

摘自:http://huangyifa163.blog.163.com/blog/static/262875752011127102215790/

添加:本来以为以上就ok了,谁知道在win7上连接ubuntu的mysql服务器的时候,仍然出现问题,是想修改一下权限,用GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'password',提示access denied ''@'%' ……。又是查找一番,忽然发现有种写法是GRANT ALL PRIVILEGES ON *.* TO root@'%' identified by 'password',就是root不加‘’,我以为找到问题了,于是重启,准备实验一下,谁知道重启后,再连接,ok了。呵呵呵,原来就是上面写的密码修改好了就ok了。

再添加:我的用mysql客户端是heidiSQL,因为之前公司用的是这个,这个软件用着小巧,但是功能强大,界面布局颜色感觉也很不错,所以,现在还用它。用它连接ubuntu的mysql服务器,每次都提示ERROR (1045)#0: Access denied for user 'root'@'192.168.1.123' (using password: YES),有时候又可以,最后才认定是我的系统的网络驱动有点问题,连接时候会出现异常。

add:ERROR 1045 (28000): Access denied for user ''@'localhost' (using password: YES)

  开始的时候,mysql的错误提示如之前所遇到的,就按照以上的步骤去解决,而这次在执行grant权限操作时候,以上一个错误出现了。这个错误开始没放在心上,处理的方法还是按照之前的步骤进行的,但是问题依旧,搞得我一点精神都没有。没办法,昨天已经搞了一天了,今天要解决啊,于是,对于遇到的每个错误,都google解决方案,查看错误原因,最后解决方案找到了,而且连接成功:摘自http://2828602.blog.51cto.com/2818602/769788

错误原因是mysql的密码有问题,用mysql匿名用户可以进入数据库,但是看不见mysql数据库.

解决办法:

具体操作步骤:
关闭mysql:
# service mysqld stop
然后:
# mysqld_safe --skip-grant-tables    (这一步貌似在我这一直执行不完似的,最后强制停止了它,继续下面的操作)
启动mysql:
# service mysqld start
mysql -u root
mysql> use mysql
mysql> UPDATE user SET Password=PASSWORD('xxx') WHERE user='root';
mysql> flush privileges;
mysql>q

到这里密码已经修改成功,

mysql -u root -p

输入刚才设置的密码,就可以成功登陆。

以上是在ubuntu下,现在在win7下安装mysql,安装时候忘配置了,然后也遇到了之上的类似错误,解决方法好像有所不同,用UPDATE user SET Password=PASSWORD('xxx') WHERE user='root';,一直提示语法错误,好吧,重新找答案:http://blog.sina.com.cn/s/blog_7b8e2cf30100z7qs.html就ok了,如下:

登陆root用户并修改密码
   mysql -u root -p
   Enter Password: #不输入直接回车默认密码
   进入mysql>      #mysql命令行
   set password for 'root'@'localhost' = password('123456');
   set password for 'root'@'127.0.0.1' = password('123456');

原文地址:https://www.cnblogs.com/playerboy/p/3197430.html