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)