我遇到的问题是root用户莫名其妙的不能登录了。在别人帮忙下,无密码登录,再修改密码,结果修改失败,如图
兄嘚 应该是兼容问题 , 如有帮助给个采纳谢谢
操作如下mysql -uroot -p
敲回车,不需要密码再敲回车
select host, user, authentication_string, plugin from user;
host
: 允许用户登录的ip‘位置’%表示可以远程;
也可以参考一下 https://blog.51cto.com/liufengleo/2519310user
:当前数据库的用户名;
authentication_string
: 用户密码;在mysql 5.7.9以后废弃了password字段和password()函数;
plugin
: 密码加密方式;
先让root
密码置空
use mysql
;
update user set authentication_string='' where user='root';
把/etc/my.cnf
的[mysqld]
的skip-grant-tables
注释掉
重启mysql
:systemctl restart mysql
命令行登录,然后通过ALTER user 'root'@'localhost' IDENTIFIED BY 'allen1qaz!QAZ'
即可修改密码
但不是密码问题,盲猜是兼容问题,通过mysql_upgrade -u root -p
命令即ok
MyISAM存储引擎没有这张表,使用show tables看下有哪些表,或者使用其他命令比如grant授权语句试下
虽然改了密码,但是发现root登录仍无需登录密码,或者加参数-p输入密码时,任何密码都可以进入。
原因:查看用户插件信息
select user,host,plugin from mysql.user;
显示root插件为auth_socket,这种插件无需密码,所以设置任何密码都无效。
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | auth_socket |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
更改插件为mysql_native_password
或者caching_sha2_password
use mysql;
UPDATE user SET plugin='caching_sha2_password' WHERE User='root';
FLUSH PRIVILEGES;
更改完成后,需重新设置root密码生效,修改方法同上。修改后,登录需要输入正确密码
注: 为了提供更安全的密码加密,MySQL8.0的首选默认密码认证插件是caching_sha2_password,而不是mysql_native_password,根据自己需求选择插件
错误代码 1726 表示密码不符合要求。根据你提供的截图,可以看到密码设置为了 123456,这个密码可能不符合密码策略的要求,导致密码修改失败。
在 Windows 中,密码策略是由组策略设置来控制的。如果密码不符合密码策略的要求,就会导致密码修改失败。你可以检查一下组策略设置,看看密码策略的要求是什么。
具体来说,可以按照以下步骤检查密码策略设置:
1、打开组策略编辑器。可以按下 Win + R 键,然后输入 gpedit.msc 命令来打开。
2、在组策略编辑器中,依次展开以下路径:计算机配置 -> Windows 设置 -> 安全设置 -> 账户策略 -> 密码策略。
3、在右侧窗口中,可以看到密码策略的设置。其中,最常见的要求包括密码长度、复杂性、历史记录等。你可以根据实际情况修改这些设置,以满足你的密码要求。
修改完成后,可以尝试重新修改密码,看看是否能够成功。
另外,如果你是在使用 Active Directory 管理用户和计算机,那么密码策略的设置可能由域策略控制,而不是本地组策略。你需要在域控制器上修改域策略设置,才能生效。
mysql 版本是多少,我看截图怎么还在用MyISAM 存储引擎,现在的数据库都是默认inodb了啊
用了3天,这个问题终于解决了!谢谢各位。我要总结一下经验,以后再遇到这种情况,在反出来看看。