MySQL密码正确却登录失败

系统版本

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 21.04
Release:	21.04
Codename:	hirsute

Centos pass掉,好像和Ubuntu的处理不太一样

错误提示:

# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

错误来源

情况1:一个是密码错误,一般这种情况居多;
情况2:root账户的本地登录被限制,我这次遇到的就是这种情况

解决方法

首先停止mysql服务
sudo service mysql stop
无密码模式登录

其中 --skip-grant-tables 的意思是跳过授权表,通过此参数来跳过输入密码,后面跟得 & 符号是表示设置此进程为后台进程

# sudo mysqld_safe --user=root --skip-grant-tables &
sudo mysqld_safe --user=root --skip-grant-tables
2021-11-27T08:30:15.329550Z mysqld_safe Logging to '/var/lib/mysql/zhengzx.err'.
2021-11-27T08:30:15.332655Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

‘/var/run/mysqld’ for UNIX socket file don’t exists.

# 没有下面这些文件就创建它,有则忽略
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables --skip-networking
2021-11-27T09:02:03.349206Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2021-11-27T09:02:03.385756Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

登录

mysql -uroot -p

敲回车就okay了,然后修改

情况1-忘记密码,修改root密码
-- 修改root密码
use mysql;
alter user root@'localhost' identified by '123456';
flush privileges; #刷新系统授权表

修改成功,退出–skip-networking模式,重启mysql即可

情况2-root账户的本地登录被限制
show databases;
use mysql;
mysql> select host,user from user;
+---------------+------------------+
| host          | user             |
+---------------+------------------+
| 192.168.0.105 | root             |
| localhost     | debian-sys-maint |
| localhost     | mysql.infoschema |
| localhost     | mysql.session    |
| localhost     | mysql.sys        |
+---------------+------------------+
5 rows in set (0.00 sec)
mysql> update user set host='localhost' where user = 'root';
mysql> FLUSH PRIVILEGES;

然后退出,关掉之前的–skip-grant-tables模式,然后重新启动mysql,就okay了;

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值