常见误区hen多人以为执行了ALTER ROLE ... SET password_encryption = 'md5'就算改完了。实际上,这只改了参数,Yi存在的密码并不会自动转换格式。
如何查kan当前存储格式?
SELECT rolname AS 用户名, CASE WHEN rolpassword IS NULL THEN '未设置密码' WHEN rolpassword LIKE 'SCRAM-SHA-$%' THEN 'SCRAM-SHA-' WHEN rolpassword LIKE 'SCRAM-SM3$%' THEN 'SCRAM-SM3' WHEN rolpassword LIKE 'md5%' THEN 'MD5' WHEN rolpassword LIKE 'sm3%' THEN 'SM3' ELSE '未知格式' END AS 存储算法FROM sys_authid WHERE rolname IN ;
# TYPE DATABASE USER ADDRESS METHOD# -----------------------------------------------------------------------local all system peerhost all fin_app ./ scram-sha-host all teaching_assistant ./ scram-sha-host all legacy_mercury ./ md5host all gov_finance ./ sm3
KingbaseES支持多种密码存储算法,通过passwordencryption参数控制。
查kan参数是否需要重启:
SELECT name, context, pendingrestart FROM syssettings WHERE name = 'passwordencryption';context = user表示Ke以在各层级动态设置,pending_restart = f表示修改后无需重启数据库。
为方便后续演示,先创建几个测试用户:
-- 创建演示数据库CREATE DATABASE demodb;-- 创建四个测试用户CREATE USER fin_app WITH PASSWORD 'SecurePass!'; -- 金融应用CREATE USER teaching_assistant WITH PASSWORD 'Kingbase_123'; -- 教学应用CREATE USER legacy_mercury WITH PASSWORD 'Mercury@'; -- 遗留系统CREATE USER gov_finance WITH PASSWORD 'Gov@'; -- 政务系统
这四个用户会贯穿全文,分别对应不同的存储算法和认证方式组合。
先kan一张对比表: