您的位置:首页 > 数据库 > MySQL

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

2014-05-20 12:19 477 查看
参考: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