参考: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.1Enter password: <==输入xxxx.2ERROR 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 stopsudo /etc/init.d/mysql start3> 输入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 Bye4> 改好之后,再修改一下my.cnf这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql就可以了。