您的位置:首页 > 运维架构 > Linux

MYSQL:Access denied for user 'root'@'localhost' 解决方案(Windows,Linux,MacOS三个系统各自的解决方案)

2017-01-05 00:00 513 查看
摘要: Access denied for user 'root'@'localhost' 问题

今天在一个Windows Server上用Navicat打开数据库的时候,报了这个错,无法打开,上百度查了一下,发现是个挺常见的问题,很多人都遇到过,所以在此记录一下,以备后用。

解决方案:绕过登录进入Mysql,然后修改密码即可。

Windows下的操作:

1.停止Mysql服务,可以在 开始菜单->控制面板->系统和安全->管理工具->服务 里停止MySQL服务,也可以用cmd开命令行,然后输入命令:

net stop mysql

2.打开命令行,cd到你的MySQL的目录下,比如我的目录是:C:\Program Files\MySQL\MySQL Server 5.5\bin,所以我的命令就是:

cd C:\Program Files\MySQL\MySQL Server 5.5\bin

3.输入命令:

mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 5.5\my.ini" --console --skip-grant-tables

(default-file的地址取决于你自己电脑上的MYSQL的地址,不要直接复制,--skip-grant-tables这个参数的意思是启动mysql时跳过授权表,简单的说,就是不需要输入账号密码即可登录进数据库

4.然后命令行里会打印一堆日志,证明命令已经生效,这时,我们就重新开一个命令行(不要关闭当前的命令行)

5.在新开的命令行里输入:

cd C:\Program Files\MySQL\MySQL Server 5.5\bin

(cd后面的目录取决于你本身的MYSQL的目录)

6.直接输入:

mysql

,不用账号密码就可以直接进入mysql了

7.输入:

use mysql

(选择mysql这个database)

8.输入:

update user set password=PASSWORD("NewPassword") where user="root";

(更新root用户的密码,不解释了,NewPassword这个值自己改)

9.刷新一下,输入:

FLUSH PRIVILEGES;

10.然后就可以退出mysql了,然后再把刚刚的那个命令行也停止了,重新打开MYSQL服务,接着就拿着你的新密码去打开mysql吧~~

Linux下的操作:(#后面跟的是命令行命令,mysql>后跟的是mysql命令行的命令)

# /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’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p


Mac下的操作: (#后面跟的是命令行命令,mysql>后跟的是mysql命令行的命令)

# sudo /usr/local/mysql/bin/mysqld stop
# sudo mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p


P.S.

1.如果发现mysql的User表中没有Password字段,那就把

mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;

改为:

mysql> UPDATE user SET authentication_string=PASSWORD(’newpassword’) where USER=’root’;

2.如果进入数据库后,进行操作时提示:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

那就输入下面的命令(youPassword自行替换):

SET PASSWORD = PASSWORD('youPassword');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL
相关文章推荐