关于达梦数据库sysdba密码忘记的问题:接触过达梦数据库的工程师应该都知道,达梦官方说法是必须重装,但是网络有很多其他文档都说到了ENABLE_LOCAL_OSAUTH这个参数,今天尝试,确实可以在忘记sysdba密码的情况下紧急进入系统密码修改,验证过程如下:
1、达梦数据库版本
SQL> select * from v$version;
行号 BANNER
---------- -------------------------
1 DM Database Server 64 V8
2 DB Version: 0x7000c
2、确定ENABLE_LOCAL_OSAUTH参数类型
SQL> select para_name,para_type,para_value from v$dm_ini where para_name like ‘%OSAUTH’;
行号 PARA_NAME PARA_TYPE PARA_VALUE
1 ENABLE_LOCAL_OSAUTH READ ONLY 0
注:
SESSION: 会话级, 动态参数, 即改即生效, 只针对当前会话有效。
SYS: 系统级, 动态参数, 即改即生效, 全局的参数。
IN FILE: 静态参数, 需要重启数据库实例生效。
READ ONLY: 只读参数, 需要通过文本编辑器(vi/vim) 修改。
3、经查看$DM_HOME/data/DMSERVER/dm_ini文件,发现并没有吃参数,经官方文档说明:此文档为隐含参数,添加此参数到dm_ini文件内
ENABLE_LOCAL_OSAUTH=1
4、重启达梦数据库实例。
$DmServiceDMSERVER restart
5、通过本地用户验证的方式连接数据库实例,出现提示:用户名和密码,一路“回车”;
[dmdba@dm8 DMSERVER]$ disql / as sysdba
[-2512]:未经授权的用户.
disql V8
用户名:di
[-2501]:用户名或密码错误.
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.736(ms)
SQL>
SQL>
6、验证当前数据库的用户;
SQL> select user;
行号 USER()
1 SYSDBA
已用时间: 5.237(毫秒). 执行号:300.
7、修改sysdba的密码;
SQL> alter user “SYSDBA” identified by “dameng123”;
操作已执行
已用时间: 202.969(毫秒). 执行号:403.
SQL>
8、验证修改的密码
[dmdba@dm8 DMSERVER]$ disql sysdba/dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.794(ms)
disql V8
到此说明达梦数据库的密码修改成功。