我在我的MariaDB服务器(版本10.1.26-MariaDB-0 + deb9u1)上发现了一种奇怪的现象
我很久以前曾经有一个用户XYZ,而这个用户可能在某个时候被删除了。但是,我尝试使用此用户登录,并且收到以下错误消息:
mysqli_real_connect():(HY000 / 1275):服务器正在运行 --secure-auth模式,但是'XYZ'@'localhost'具有旧格式的密码;请更改密码为新格式
请确定,我尝试使用不存在的用户登录。例如,我尝试以NOTEXISTING身份登录,只是为了验证错误消息的确不同。
mysqli_real_connect():(HY000 / 1045):用户被拒绝访问 'NOTEXISTING'@'localhost'(使用密码:是)
现在的问题是,旧用户信息存储在哪里?
该用户在mysql数据库中不存在:
select * from mysql.user where user = 'XYZ';
=>空结果
grep -r XYZ /path_to_mysql_database_dir/mysql/
=>没事
我还尝试了“ FLUSH PRIVILEGES”来重新加载用户表。
您是否知道用户信息的存储位置?
更新
尝试了各种事情,甚至在一个全新的已安装系统上进行了测试之后,我得出的结论是它一定是某种错误,因此我打开了一个错误报告:https://jira.mariadb.org/browse/MDEV-17789。任何其他想法都欢迎。
答案 0 :(得分:0)
明文密码不会存储在任何地方。
SELECT user, host, password FROM user
可能提供类似的内容
| pm_demo | localhost | FFC3F585 |
| dist | localhost | A8900DDB |
| ronly | localhost | 5208517A |
| spent | localhost | 26B08F08 |
| test | 1.2.3.4 | A40C6DCC |
该“密码”实际上是纯文本密码的加密版本。这是“旧格式”,不是很安全。新密码看起来更像
*A5280BD3F8C6BCC6537FCC3E113D794DD53534CC
还有其他身份验证机制。 (我不知道您在身份验证的发展中处于什么位置。)
SELECT * FROM user WHERE user = 'xyz'\G
*************************** 1. row ***************************
Host: localhost
User: xyz
Password: *6D800EA40C6DCC75BFF67DAB58D5D49FC5F8E568
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
...
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string:
password_expired: N
1 row in set (0.00 sec)
SHOW GRANTS FOR xyz@localhost;
+------------------------------------------------------------------------------------------------------------+
| Grants for xyz@localhost |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'xyz'@'localhost' IDENTIFIED BY PASSWORD '*6D800EA40C6DCC75BFF67DAB58D5D49FC5F8E568' |
| GRANT ALL PRIVILEGES ON `xyz`.* TO 'xyz'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
答案 1 :(得分:0)
开发人员已根据用户表的哈希值确认错误消息(我认为是错误的)是故意行为。
https://jira.mariadb.org/plugins/servlet/mobile#issue/MDEV-17789