在实际过程中经常有人会问起万一忘记了SYSDBA密码怎么办。也有人在网络上吐槽,达梦数据库忘了SYSDBA密码就只能重装。

其实这个问题说起来有几个应用场景。

  1. 我们数据库里的数据不重要,我只是用来学习和测试。
  2. 我们数据库里的数据重要,无论如何我都不想丢失。
  3. 我们数据库里的数据重要还涉密,如果被人入侵我宁愿数据销毁也不能备别人拿到。

针对这几种情况达梦数据库有个本地验证参数:ENABLE_LOCAL_OSAUTH

就是是否允许本地认证。这个参数不在dm.ini中。默认为0不允许

只有具有DBA角色的用户才有权限调用SP_SET _PARA_VALUE所以如果当你忘了DBA权限用户密码才去修改这个参数就晚了。

所以我们在数据库安装完成后就要考虑到DBA权限丢失这种情况。如果数据不重要或者数据涉密,即使拿到底层操作系统权限也不能登录数据库那么就保持默认参数。如果我们在丢失DBA密码后认可掌握底层操作系统权限可以登录数据库。那么请首先修改参数:ENABLE_LOCAL_OSAUTH 

 试图修改静态配置参数时服务器会返回错误信息。

所以我们要使用下面命令。数据库重启后才能生效。

SP_SET_PARA_VALUE(2,'ENABLE_LOCAL_OSAUTH',1);

我们重启数据库后查询这个参数已经生效。

操作系统中加入dmdba|dmsso|dmauditor 用户组,分别对应数据库的 SYSDBA|SYSSSO|SYSAUDITOR。我们忘记的SYSDBA

就创建dmdba

groupadd dmdba

把dmdba 这个用户加入这个组

usermod -a -G dmdba dmdba

切换到dmdba用户

Su - dmdba

登录数据库

disql /@localhost:5238 as sysdba

 直接修改sysdba密码

alter user sysdba identified by "SYSDBA123";

我们验证下

disql sysdba/SYSDBA123@localhost:5238

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐