【Mysql登录失败&修改密码&新增root用户&修改密码策略】Access denied for user ‘root‘@‘localhost‘ (using password: NO)

Linux版本:CentOS7
Mysql版本:5.7.26

登录失败&修改密码

起因是我最近在学习Linux,今天刚好学到了安装webmin。webmin上输入mysql的账号和密码后就可以控制Linux服务器上的mysql数据库。但我今天试的时候并不能成功登陆上去,给我报了账号和密码错误。然后我打开navicat想试试能不能连上去,因为之前通过navicat连接成功过数据库,还在navicat上保存了账号和密码,所以账号和密码是不可能有问题。
我就通过以下的报错在网上搜:

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

搜出来的都是以下操作方法:

vim /etc/my.cnf # 打开配置文件 然后在[mysqld]下方插入以下一句话
skip-grant-tables # 这句话的意思是跳过登录
# 然后保存退出
systemctl restart mysqld # 重启mysql服务
mysql -u root -p
# 此时不用输入密码 直接回车就可进入
use mysql; # 切换数据库
update user set authentication_string=password("123456") where user='root';

这样操作之后,mysql给我的提示信息是:

Query OK, 0 rows affected, 1 warning (0.00 sec)

意思就是我没有修改成功,然后我通过:

select user,host from user;

查询出来发现我根本没有root用户orz
接下来就需要新增root用户

新增root用户

create user 'root'@'localhost' identified by '123456';

如果此步骤报以下错误:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

则运行:(不报错的就跳过)

flush privileges;

再次运行:

create user 'root'@'localhost' identified by '123456';

如果还报错,则运行:(不报错的就跳过)

drop user 'root'@'localhost';

再再次运行:(应该是不会报错了,报错当我没说)

create user 'root'@'localhost' identified by '123456';

然后赋予root用户权限:

grant all privileges on *.* to 'root'@'localhost' with grant option;
flush privileges;
exit;

然后将/etc/my.cnf中跳过权限的那句话注释掉:

vim /etc/my.cnf

#skip-grant-tables

# 保存并退出
systemctl restart mysqld # 重启mysql服务
# 再次尝试登录
mysql -u root -p
# 输入刚刚重新设置的密码 即可登录成功

如果要赋予root用户远程登录的权限,可以进行如下操作:

# 首先需要登录到mysql
user mysql; # 切换数据库
update user set host='%' where user='root'; # 允许root用户远程登录
flush privileges; # 刷新权限

修改密码策略

当我们想设置简单的密码的时候,看了别人发的如何修改安全策略的代码,如下:

set global validate_password_policy=0;
set global validate_password_length=1;

但是却报了如下错误:

ERROR 1193 (HY000): Unknown system variable ‘validate_password_policy‘

解决办法:

vim /etc/my.cnf # 打开配置文件

# 在[mysqld]下方加入以下两句话
plugin-load-add=validate_password.so  # 插件的加载方法,每次服务器启动时都必须给出该选项
validate-password=FORCE_PLUS_PERMANENT  # validate-password在服务器启动时使用该选项来控制插件的激活

# 保存并退出后
systemctl restart mysqld # 重启mysql服务
mysql -u root -p # 登录到mysql

SHOW VARIABLES LIKE 'validate_password%'; # 查看安全策略
set global validate_password_policy=0; # 再次尝试修改

# 有可能这次不报错,但是查看安全策略后还是没有修改成功。可以试试运行这条命令:
set global validate_password_policy=LOW;

参考资料:

1.MySQL修改安全策略时报错:ERROR 1193 (HY000): Unknown system variable ‘validate_password_policy‘的解决方法
2.MySql解决mysql没有root用户问题
3.ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值