[转帖]DM 达梦数据库 忘记 SYSDBA 密码 解决方法

dm,数据库,忘记,sysdba,密码,解决,方法 · 浏览次数 : 0

小编点评

**IP:** LOCALHOST **用户组:** dmdba **具体步骤:** 1. 修改数据库的系统用户组为dmdba。 2. 创建同名用户组,并将用户加入改组。 3. 修改本地认证规则,以使用dmdba组名进行认证。 4. 测试数据库连接是否正常。

正文

 

2022-08-04 22:2318321原创DM 达梦

1 背景说明

在其他的关系型数据库中,都有OS认证,所以我们并不担心忘记超级管理员密码的问题。 在达梦数据库中,因为安全的原因,默认并没有启用本地OS认证的方式,并且在忘记SYSDBA用户密码的情况,无法进行重置密码,只能选择重建实例,然后把业务数据迁移过来。

实际上,达梦是有一个隐含参数来控制是否启用OS认证登陆的:ENABLE_LOCAL_OSAUTH。当然,在官方手册里查询不到该参数的信息。 在官方手册里只有一个类似的静态参数:ENABLE_REMOTE_OSAUTH,默认0,表示不支持;1:表示支持,该参数设置仅安全版有效。

在忘记SYSDBA 用户密码的情况下,我们可以通过设置ENABLE_LOCAL_OSAUTH=1 来启用本地OS认证,然后直接修改SYSDBA的密码即可。

2 操作示例

密码登陆问题:

[dave@www.cndba.cn  cndba]$ disql / as sysdba
[-2512]:未经授权的用户.
disql V8
用户名:^C
[dave@www.cndba.cn  cndba]$ disql SYSDBA@127.0.0.1:5236

服务器[127.0.0.1:5236]:处于普通打开状态
登录使用时间 : 2.050(ms)
disql V8
SQL>
SQL> alter user SYSDBA identified by "www.cndba.cn";
操作已执行
已用时间: 21.532(毫秒). 执行号:4.
SQL> exit
[dave@www.cndba.cn  cndba]$ disql SYSDBA@127.0.0.1:5236
[-2501]:用户名或密码错误.
disql V8
用户名:

这里的细节就是使用默认的情况下,不指定密码也能登陆,如果是非默认密码,则会报错。

查看达梦版本:

[dave@www.cndba.cn  cndba]$ disql SYSDBA/SYSDBA@127.0.0.1:6236

服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 14.349(ms)
disql V8
SQL>  select * from v$version;

行号     BANNER
---------- -------------------------
1          DM Database Server 64 V8
2          DB Version: 0x7000b

已用时间: 11.228(毫秒). 执行号:204.

查看默认参数值:

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_REMOTE_OSAUTH IN FILE   0
2          ENABLE_LOCAL_OSAUTH  READ ONLY 0

已用时间: 13.079(毫秒). 执行号:205.
SQL>

达梦参数的4种设置级别如下:

SESSION: 会话级, 动态参数, 即改即生效, 只针对当前会话有效。
SYS: 系统级, 动态参数, 即改即生效, 全局的参数。
IN FILE: 静态参数, 需要重启数据库实例生效。
READ ONLY: 只读参数, 需要通过文本编辑器(vi/vim) 修改。

ENABLE_LOCAL_OSAUTH参数是只读的,所以无法使用如下命令修改:
SQL> sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);

直接修改dm.ini 参数,并重启达梦实例:

[dave@www.cndba.cn  cndba]$ cat dm.ini|grep LOCAL
                ENABLE_LOCAL_OSAUTH             = 0                     #Whether to enable local authorization by operating system users
                DCRS_IP                         = LOCALHOST               #IP on which the dcrs server will listen
                AP_IP                           = LOCALHOST               #The ap server IP for dcrs
[dave@www.cndba.cn  cndba]$ vim dm.ini
[dave@www.cndba.cn  cndba]$ cat dm.ini|grep LOCAL
                ENABLE_LOCAL_OSAUTH             = 1                     #Whether to enable local authorization by operating system users
                DCRS_IP                         = LOCALHOST               #IP on which the dcrs server will listen
                AP_IP                           = LOCALHOST               #The ap server IP for dcrs
[dave@www.cndba.cn  cndba]$


[root@www.cndba.cn  bin]# /dm/dmdbms/bin/DmServicecndba start
Starting DmServicecndba:                                   [ OK ]
[root@www.cndba.cn  bin]#

查看参数已经生效:

[dave@www.cndba.cn  log]$ disql SYSDBA/SYSDBA@127.0.0.1:6236

服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 2.282(ms)
disql V8
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_REMOTE_OSAUTH IN FILE   0
2          ENABLE_LOCAL_OSAUTH  READ ONLY 1

已用时间: 12.559(毫秒). 执行号:4.
SQL>

验证OS认证:

[dave@www.cndba.cn  log]$ disql  SYSDBA@127.0.0.1:6236

服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 1.907(ms)
disql V8
SQL>

修改密码:
SQL> select user;

行号     USER()
---------- ------
1          SYSDBA

已用时间: 1.749(毫秒). 执行号:104.

SQL> alter user SYSDBA identified by "www.cndba.cn";
操作已执行
已用时间: 18.161(毫秒). 执行号:105.
SQL>

[dave@www.cndba.cn  log]$ disql SYSDBA/"www.cndba.cn"@127.0.0.1:6236

服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 2.405(ms)
disql V8
SQL>

但是OS 登陆失败,正常这里会提示用户名和密码错误,只需要一直回车即可,但是这里并没有连上:

[dave@www.cndba.cn  cndba]$ disql / as sysdba
[-2512]:未经授权的用户.
disql V8
用户名:
密码:
[-2501]:用户名或密码错误.
用户名:
密码:
[-2501]:用户名或密码错误.
在 3 次尝试之后无法连接到服务器, 退出 DISQL
[dave@www.cndba.cn  cndba]$

因为之前版本比较旧,所以打算升级下版本:

SQL> select id_code;

行号     ID_CODE
---------- ----------------------------
1          1-1-126-20.09.04-126608-ENT

已用时间: 3.079(毫秒). 执行号:104.
SQL>

DM 达梦数据库 8.1.1.48 升级到 8.1.1.126 操作步骤
https://www.cndba.cn/dave/article/4314

DM8 达梦数据库 查看数据库版本号 方法
https://www.cndba.cn/dave/article/4260

 

结果从官网下的22.7版本,按之前的方式,替换,并没有效果,虽然软件启动成功,但是版本并没有变化。 这里可能是以为我们升级的跨度比较大,所以升级失败了。 这里先不研究。

最终发现这里最关键的原因还是系统用户组的问题,本地认证是通过group名来判断的,我们的达梦用户是dmdba,创建一个同名的组,并将用户加入改组,本地认证就可以生效了。

[root@www.cndba.cn  ~]# id  dmdba
uid=1001(dmdba) gid=1002(dinstall) 组=1002(dinstall)
[root@www.cndba.cn  ~]# usermod -G dmdba dmdba
usermod:“dmdba”组不存在
[root@www.cndba.cn  ~]# groupadd dmdba
[root@www.cndba.cn  ~]# usermod -G dmdba dmdba
[root@www.cndba.cn  ~]# id dmdba
uid=1001(dmdba) gid=1002(dinstall) 组=1002(dinstall),1003(dmdba)
[root@www.cndba.cn  ~]#


[dmdba@www.cndba.cn  ~]$  disql / as sysdba

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 6.309(ms)
disql V8
SQL>
SQL> exit
[dmdba@www.cndba.cn  ~]$ disql SYSDBA/"www.cndba.cn"@127.0.0.1:5236

服务器[127.0.0.1:5236]:处于普通打开状态
登录使用时间 : 3.086(ms)
disql V8
SQL> 
[dmdba@www.cndba.cn  ~]$ disql  /@127.0.0.1:5236  as sysdba

服务器[127.0.0.1:5236]:处于普通打开状态
登录使用时间 : 3.529(ms)
disql V8
SQL>

版权声明:本文为博主原创文章,未经博主允许不得转载。

与[转帖]DM 达梦数据库 忘记 SYSDBA 密码 解决方法相似的内容:

[转帖]DM 达梦数据库 忘记 SYSDBA 密码 解决方法

2022-08-04 22:2318321原创DM 达梦 本文链接:https://www.cndba.cn/dave/article/108578 1 背景说明 在其他的关系型数据库中,都有OS认证,所以我们并不担心忘记超级管理员密码的问题。 在达梦数据库中,因为安全的原因,默认并没有启用本地OS

[转帖]DM 达梦数据库 临时表空间 管理说明

2020-12-01 21:3516090原创DM 达梦 本文链接:https://www.cndba.cn/dave/article/4315 在之前的2篇博客中我们了解了达梦数据库表空间的基本操作,如下: DM7 达梦数据库 表空间 管理 说明https://www.cndba.cn/dave/

[转帖]DM 达梦数据库 记录超长 错误解决方法

2022-08-24 09:423551原创DM 达梦 本文链接:https://www.cndba.cn/dave/article/108596 1 问题说明与分析 在达梦数据库中进行数据库Insert时可能会遇到如下错误: java.sql.SQLException: Record length

[转帖]DM8 达梦数据库 查看数据库版本号 方法

2020-09-28 17:24183572原创DM 达梦 本文链接:https://www.cndba.cn/dave/article/4260 在DM7 中,查询数据库版本号的方法和Oracle 一样,通过v$version 视图可以查询。 [dmdba@www.cndba.cn ~]$ dis

[转帖]达梦数据库 DM8 中 注册服务 说明

2019-10-29 19:3830480原创DM 达梦 本文链接:https://www.cndba.cn/dave/article/3753 达梦数据库 DM8 中 注册服务 说明 在之前的博客我们了解了DM7中的服务注册,如下: DM7 达梦数据库 通过dminit 创建 并 注册 数据库实例

[转帖]测试工具 sysbench (Centos 7.x) for DM数据库

1、简单介绍 sysbench是一个开源,模块化的多线程性能测试工具,可以用来进行硬件环境性能测试,也可进行数据库的性能测试。但是由于需要支持DM测试,所以我们一般使用源码进行编译。 2、运行方法 sysbench通过运行lua脚本进行数据库测试。而每次测试都分为prepare、run、cleanu

[转帖]测试工具 sysbench (Centos 7.x) for DM数据库

1、简单介绍 sysbench是一个开源,模块化的多线程性能测试工具,可以用来进行硬件环境性能测试,也可进行数据库的性能测试。但是由于需要支持DM测试,所以我们一般使用源码进行编译。 2、运行方法 sysbench通过运行lua脚本进行数据库测试。而每次测试都分为prepare、run、cleanu

[转帖]tidb之旅——tidb架构选择

https://zhuanlan.zhihu.com/p/641650168 前言 从4月份开始利用tidb改造了我们公司bi系统。这个过程中,我感觉到了tidb的强大。也打算记录一下整个改造过程。我打算从4个方面来记录这个改造过程。tidb架构选择,dm工具的使用——这两个部分还是tidb6.5.

[转帖] date命令详解

https://www.cnblogs.com/qmfsun/p/4598650.html date "+今天是%Y-%d-%m,现在是%H:%M:%S" 1. 显示时间date命令可以按照指定格式显示日期,只键入date则以默认格式显示当前时间。如下: 如果需要以指定的格式显示日期,可以使用“+”

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to