Centos 7 - 第一次登陆 Mysql 数据库 修改密码问题 ERROR 1045 (28000) - 临时生效方法

发布时间 2023-03-24 16:51:45作者: Loki_Severus

这里第一次安装mysql容易出现报错:

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

解决方法如下:

1. 修改mysql的初始密码(有两种方法)

1.1 第 1 种方法 (不推荐,无聊时弄出来的)

MySQL第一次启动后会创建超级管理员账号 root@localhost,初始密码存储在日志文件中:/var/log/mysqld.log

查看 Mysql 服务器初始密码的命令如下:

grep 'temporary password' /var/log/mysqld.log

通常而言,界面显示的 A temporary password is generated for root@localhost: 后面就是 Mysql 服务器的初始密码

[root@localhost ~]# mysql -uroot -p
Enter password: 输入 Mysql 初始密码

进入 Mysql 服务器命令终端,输入命令如下:

mysql> ALTER USER  'root'@'localhost' IDENTIFIED BY 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 
#密码太弱

如果密码太弱了,就会报错 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

1.1.1 Mysql 初次修改密码,因密码太弱报错的多种解决方法如下:

  1. 使用复杂密码,Mysql 数据库默认的密码策略是要包含数字、字母及特殊字符;
  2. 如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数),使其支持简单密码的设定,具体方法可以参考:如何修改 Mysql 的密码策略:传送门

进入 Mysql 服务器 mysql> 使用查看 Mysql 密码策略命令:

 mysql> SHOW VARIABLES LIKE 'validate_password%'; 

修改 Mysql 密码策略安全等级命令:

 mysql> set global validate_password_policy=LOW;

设置限制 Mysql 密码长度为 6 个字符(当然这个长度可以自己选择,但是只有配置了密码策略为 LOW 才可以,仅仅只检查密码长度)

 mysql> set global validate_password_length=6;
  1. 修改默认安装 Mysql 的配置文件/etc/my.cnf(配置文件默认是该路径下),添加validate_password=OFF,保存并重启 MySQL 服务器

1.2 第 2 种方法 (推荐)

在mysql 的配置文件 /etc/my.cnf 里面[mysqld]下面加入如下内容:

[mysqld]

skip-grant-tables

然后就可以不用输入密码,就能登录mysql

mysql -uroot -p

输入命令,直接回车就能进入了!

mysql>

use mysql;

mysql>

update user set authentication_string=password('新密码') where user='root';

mysql>

flush privileges;

退出mysql

mysql>

quit;

在这里可能会想到,我为 root 用户设置了mysql密码,那么我之前在/etc/my.cnf 内配置的 skip-grant-tables 还有没有作用呢?答案是没有了,优先级是看该用户是否设置了密码,不过初始密码不是已经为 root 设置了密码吗?看来这又是一个挠人的问题!
之后重新启动 mysql 服务器

service mysqld restart

shell终端输入命令:

mysql -uroot -p

直接回车就可以不用验证密码,直接登陆mysql了。