oracle 11g密码长度和复杂度查看与设置
一 查看当前的密码复杂度设置
SELECT * FROM dba_profiles WHERE resource_name = 'PASSWORD_VERIFY_FUNCTION';
LIMIT表示分配给该 PROFILE 的密码验证函数名称。如果为 NULL,表示未设置密码验证函数。
#查看是否有相关密码验证函数
select object_name from dba_objects where upper(object_name) like '%VERIFY_FUNCTION%';
二 设置密码复杂度
Oracle 11g 自带密码验证函数verify_function_11G。
通过运行 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql 脚本可以创建及启用该函数。
该脚本会创建 verify_function 和 verify_function_11G 两个函数。
再设置配置文件,绑定该函数即可。
/*
verify_function_11G 的密码复杂性要求:
密码长度至少为 8 个字符。
密码必须包含至少一个数字和一个字母字符。
密码不能与用户名相同或相似。
密码不能是服务器名或其变体。
密码不能是常见的弱密码(如 welcome1、oracle123 等)。
注意事项
默认配置:在创建数据库时,PASSWORD_VERIFY_FUNCTION 参数的默认值为 NULL,即不启用任何密码验证函数。
安全性:为了增强数据库的安全性,建议启用 verify_function_11G 函数,并根据实际需求调整密码策略。
兼容性:如果数据库需要与其他系统集成,确保密码策略的兼容性,避免因密码复杂性要求过高而导致用户无法登录。
*/
2.1 运行utlpwdmg.sql
@?/rdbms/admin/utlpwdmg.sql
2.2 查看是否有相关密码验证函数
select object_name from dba_objects where upper(object_name) like '%VERIFY_FUNCTION%';
2.3 将配置文件绑定密码验证函数
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION verify_function_11G;
2.4 再次查看密码复杂度设置
SELECT * FROM dba_profiles WHERE resource_name = 'PASSWORD_VERIFY_FUNCTION';
三 设置密码复杂度示例
如上,可以看到,设置完密码复杂度后,对于新建的账号,需要满足密码复杂度的要求,不影响已建的弱口令账号的正常登录,但若修改老用户的密码,也需要满足密码复杂度要求。