Ubuntu下MySQL8.0报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

问题

在Ubuntu下,想要登录mysql数据库

root@lgl:~# mysql -uroot -p

 

报错

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

导致登录数据库不成功

解决方案

这种问题一般是密码错误,如果忘记了密码, 我们需要修改密码

打开文件

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

 

找到[mysqld]段,并加入一行“skip-grant-tables”,跳过权限验证

 

[mysqld]
...
...
skip-grant-tables

 

输入:wq保存并退出

重启数据库服务

service mysql restart

 

进入数据库,免密码

mysql -uroot -p

 

直接enter就可以进入, 首先刷新一下权限

flush privileges;
 

修改密码

ALTER user 'your username'@'localhost' IDENTIFIED BY 'your new password';

如果正常的话这里修改密码就成功了,失败的话看最后。

 

返回注释掉“skip-grant-tables”,重启mysql 即可

service mysql restart

 

可能出现的问题

修改密码时报错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

在这里插入图片描述
mysql安装了validate_password密码校验插件,导致要修改的密码不符合密码策略的要求。

解决方案

查看当前的密码策略是:

SHOW VARIABLES LIKE 'validate_password%';

 

在这里插入图片描述

  • validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 决定是否使用该插件(及强制/永久强制使用)。
  • validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。
  • validate_password_length:密码最小长度。
  • validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。
  • validate_password_number_count:密码至少要包含的数字个数。
  • validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。
  • validate_password_special_char_count:密码至少要包含的特殊字符数。 其中,关于validate_password_policy-密码强度检查等级: 0/LOW:只检查长度。 1/MEDIUM:检查长度、数字、大小写、特殊字符。 2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

 

按上面的密码要求,输入符合规则的密码;

 
posted @ 2023-02-28 11:03  r1-12king  阅读(615)  评论(0编辑  收藏  举报