一个生成Oracle用户密码的通用小程序
时间:2007-12-23 来源:不详 作者:迈克DB
但是,由于所治理的小型机及数据库、应用系统较多,每月更改近百个用户的密码,不论是密码的生成,还是密码的更改,工作量均很大,尤其是密码的生成,为了加强安全性,密码不能太简单,最好为字母与数字的随机组合。但大量的密码,若不借助自动生成,则其编排是OracleERP系统中应用系统用户(指各子系统的用户,非指具体应用用户)同时也是Oracle数据库用户(如应收模块,用户为AR,AR既是数据库用户,又是应用用户),而且,只有applsyspub(登录系统的公用用户),applsys(应用基础用户),apps(具体应用操作用户)为必须为应用系统中密码与数据库密码一致外,其它应用的数据库用户密码可以与应用系统中密码中不一致,只需在对应用系统进行打patch工作时才需将其改为一致。因而,可在打patch前,在应用系统中将应用系统用户密码修改为与数据库一致即可,平时不用修改其密码,这样一则减少了工作量,二则加强了系统的安全性。
更改数据库用户密码可通过在sqlplus执行alteruseridentifiedby密码的命令而实现,因而,可以通过自动生成密码脚本的方式,高效地完成密码的更改工作。而Unix用密码则由于需由治理员负责更改密码的并不多,故可在自动生成后,手工进行修改。
本文来自织梦
为了生成较为复杂的密码,同时提高工作效率,我用Excel自带的VBA编写了一个小脚本,运行该程序,则自动生成一个更改用户密码的脚本,同时,将用户密码记录在工作表上,以便于打印出来,保存在密码本中,做为记录。首先,需在工作表中第一列输入各个要修改密码的数据库用户的用户名,在第三列输入各然后,运行脚本gen_pass_oracle,则自动生成Oracle用户的相应的密码;运行脚本gen_pass_unix,则自动生成unix操作系统用户的相应的密码。生成的Oracle数据库用户密码保存在change_pass.sql中,可在sqlplus中调用该脚生成的Unix用户密码保存在change_pass.txt中,需手工逐个地更改密码。
可通过在程序首部修改pass_length的值的方法,确定生成的密码的长度;可通过在程序首部修改start_asc的方法,确定密码的组成0-9,A-Z还是仅A-Z其主要实现为:通过检查工作表中每一行第1列(或第3列)是否为空,判定是否结束密码生成工作。若非空,即有用户名,则进行循环,生成在程序头部定义的指定长度的密码串。密码串中的字符为通过起始字符的ascii值加上随机数产生的随机值得到的新的ascii值,再将其转换为字符型,并加入密码串中。当密码串的长度达到指定长度时,将其组合为一个sql语句写入文件中,同时,在该行的第2列(或第4列)中写入该密码串。同时,考虑到在Excel中会将“=”开头的字符串当作公式对待,故,在生成密码串时,将等于"="的ascii值过滤。用类似方法,可使生成的密码串中不包含其它不想包含的字符。 本文来自织梦
通过使用这种方式,生成并修改密码的工作量得到大大减少,安全性得到提高。
实际上,这种方法产生的密码不限于unix与Oracle,可用于各种操作系统中重要用户
Subgen_pass_app()
Dimbit_countasinteger’循环变量,密码中位数计数器
dimrow_numasinteger’需生成密码的用户名信息开始的行号
dimrnd_baseAsInteger’随机数种子
Dimchar_valueAsInteger’密码中每个字符的ascii值
Dimtemp_strAsString’密码串
Dimusername(50)AsString’用户名
dimpass_lengthasinteger’定义生成的密码的长度
dimstart_ascasinteger’定义从哪个字符开始生成
pass_length=8’设定密码长度为8位
Remstart_asc=48’设定密码从0开始
start_asc=65’设定密码从A开始
上一篇:SQL备份并压缩备份文件 下一篇:My SQL服务器的启动和关闭
文章评论
共有位Admini5网友发表了评论 查看完整内容