mysql ERROR 1045 (28000): Access denied for user解决方法

参考:http://blog.sina.com.cn/s/blog_759a5a7c01017dj0.html

以下环境是ubuntu.

1, 打算修改mysql的密码。按网上的方法修改mysql的root密码
mysqladmin -u root "xxxx.2" "xxxx.1"  
之后显示无异常。

2,打算以修改的密码登陆时出现错误信息
[test@drhel35 ~] mysql -u root -p xxxx.1
Enter password:    <==输入xxxx.2
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

3,在网上搜索了一下解决方法:
1>编辑mysql配置文件my.cnf(在linux下这个文件为my.cnf, 在windows下为my.ini)
  sudo vi /etc/mysql.cnf
  在[mysqld]这个条目下加入  
  skip-grant-tables

插一句:介绍一个非常有用的mysql启动参数―― --skip-grant-tables。顾名思义,就是在启动
mysql时不启动grant-tables,授权表。有什么用呢?当然是忘记管理员密码后有用。


2>保存退出后重启mysql
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

3> 输入mysql 就可以不用密码登录了,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。
   1)进入mysql数据库:
     mysql> use mysql;
     Database changed
   2)给root用户设置新密码
     mysql> update user set password=password("xxxx.1") where user="root";
     Query OK, 1 rows affected (0.01 sec)
     Rows matched: 1 Changed: 1 Warnings: 0
   3)刷新数据库
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
   4)退出mysql:
   mysql> quit
   Bye

4> 改好之后,再修改一下my.cnf这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql就可以了。

你可能感兴趣的:(mysql)