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

本文介绍了解决Windows、Linux及Mac环境下MySQL无法登录的问题,通过绕过登录进入并修改密码的方法来解决问题。

今天在一个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');

 

转载于:https://my.oschina.net/lonelycode/blog/819221

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值