ProxySQL如何保持散列格式的密码
在这篇博客文章中,我们将看到如何在ProxySQL mysql_users 中保存哈希格式的密码。此外,即使有人以明文形式存储密码,我们也可以很容易地将其转换成散列格式。
纯文本密码极易受到未经授权的访问,因为任何有权访问数据库或配置文件的人都可以轻易地读取它们。虽然将这些文件存储在安全的位置可以缓解一些安全问题,但仍然存在数据泄露的风险。另一方面,散列密码与MySQL服务器中的密码以相同的格式存储" mysql.user.password "(MySQL 8.0版本之前)或者" mysql.user.authentication_string"列(自MySQL 8.0版本使用mysql_native_password插件),提供了额外的安全层。
在ProxySQL中,任何以星号(*)开头的密码都被视为散列密码。
ProxySQL的管理界面缺少密码()功能。因此,存储在ProxySQL中的任何密码都以最初插入时的格式保存。这种格式可以是纯文本,也可以是哈希值。
From ProxySQL:
在这里,我们将用户账户插入到 mysql_users 混合明文格式和哈希格式的表。
ProxySQL_Admin> INSERT INTO mysql_users(username,password) VALUES ('test1','test1'), ('test2','*7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E'),('test3','test3'), ('test4','*D159BBDA31273BE3F4F00715B4A439925C6A0F2D');
Query OK, 4 rows affected (0.00 sec)
ProxySQL_Admin> select distinct username,password from mysql_users where username like 'test%';
+----------+-------------------------------------------+
| username | password |
+----------+-------------------------------------------+
| test1 | test1 |
| test2 | *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E |
| test3 | test3 |
| test4 | *D159BBDA31273BE3F4F00715B4A439925C6A0F2D |
+----------+-------------------------------------------+
4 rows in set (0.00 sec)
ProxySQL_Admin> LOAD MYSQL USERS TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)
ProxySQL_Admin> SAVE MYSQL USERS TO DISK;
Query OK, 0 rows affected (0.01 sec)
ProxySQL_Admin> select distinct username,password from mysql_users where username like 'test%';
+----------+-------------------------------------------+
| username | password |
+----------+-------------------------------------------+
| test1 | test1 |
| test2 | *7CEB3FDE5F7A9C4CE5FBE610D7D8EDA62EBE5F4E |
| test3 | test3 |
| test4 | *D159BBDA31273BE3F4F00715B4A439925C6A0F2D |
+----------+-------------------------------------------+
4 rows in set (0.00 sec)