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:检查长度、数字、大小写、特殊字符字典文件。
按上面的密码要求,输入符合规则的密码;