达梦数据库SYSDBA密码攻略

刚接触达梦数据库,SYSDBA用户的密码和其它数据库有所不同,因为如果忘记它并且数据库里再无其它拥有DBA角色的用户,那就真的要凉凉了。

如果达梦数据库部署在类似于LINUX的操作系统上,密码、端口都是走默认的,这时在本机上登录环境非常简单,只需敲DISQL再来两次回车即可登录:

[dmdba@localhost GBK]$ disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 8.239(ms)

如果SYSDBA的密码有做过更改,又忘记了密码。此时登录肯定是会失败的,并抛出[-2501]:用户名或密码错误。

dmdba@localhost GBK]$ disql  
disql V8
用户名:
密码:
[-2501]:用户名或密码错误.

这时如果数据库里有用户拥有DBA角色,并且可以正常登录。我们可以用这个用户更改SYSDBA密码。

[dmdba@localhost bak]$ disql test1/test_0001

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.329(ms)
disql V8
SQL> 
SQL> alter user SYSDBA identified by SYSDBA_2022;
操作已执行
已用时间: 7.871(毫秒). 执行号:600.
SQL> 
SQL> exit
[dmdba@localhost bak]$ disql
disql V8
用户名:SYSDBA
密码:

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

达梦数据库也留有一个参数来解决这个问题,本地验证参数:ENABLE_LOCAL_OSAUTH。

这个参数的默认值为0,不容许本地验证。并且该参数还有另外两个特点:1、只有拥有DBA权限的用户才可以更改。2、该参数只有更改、重启后才能生效。那么这就陷入了一个死循环,除非在安装数据库的时候就将这个参数值设为1,为以后忘记密码做准备。

查看参数ENABLE_LOCAL_OSAUTH

SQL> select para_name,para_value,para_type from v$dm_ini where para_name='ENABLE_LOCAL_OSAUTH';

行号       PARA_NAME           PARA_VALUE PARA_TYPE
---------- ------------------- ---------- ---------
1          ENABLE_LOCAL_OSAUTH 0          READ ONLY

尝试用普通用户修改
sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);

总共1个语句正依次执行...
[执行语句1]:
sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);
执行失败(语句1)
-5565: 没有修改INI配置参数的权限
1条语句执行失败

用拥有DBA角色的用户更改

sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);

总共1个语句正依次执行...
[执行语句1]:
sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);
执行成功, 执行耗时1毫秒. 执行号:701
影响了0条记录
1条语句执行成功

重启数据库使其生效

我们继续尝试用SYSDBA本地登录,依旧有问题

[dmdba@localhost ~]$ disql /@localhost as sysdba
[-2512]:未经授权的用户.
disql V8

我们还需要做如下操作:

groupadd dmdba

usermod -a -G dmdba dmdba

再切换到dmdba用户,尝试登录:

[dmdba@localhost ~]$ disql /@localhost as sysdba

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

现在我们就可以更改SYSDBA的密码了。

总结:

我们强烈建议妥善保管重要用户的密码,出于安全考虑,并不建议在安装数据库时将ENABLE_LOCAL_OSAUTH参数的值调整为1.

社区地址:https://eco.dameng.com

### 如何重置达梦数据库 sysdba 密码 对于达梦数据库 v8 版本,如果忘记了 `SYSDBA` 的密码,则可以通过特定的方法来重置该密码。 #### 方法一:通过命令行工具 Disql 修改密码 当无法登录到数据库时,可以利用操作系统级别的权限来进行操作。具体来说,在拥有相应权限的情况下,可以直接编辑配置文件并启动数据库实例进入单用户模式: 1. 停止当前运行中的数据库服务; 2. 使用文本编辑器打开 `$DAMENG_HOME/dm.ini` 文件(其中 $DAMENG_HOME 是安装路径),找到 `[DM]` 部分下的 `SINGLE_USER=0` 设置项,并将其改为 `SINGLE_USER=1`; 3. 启动数据库实例; 4. 利用命令行工具 `disql` 登录至数据库,此时不需要提供任何用户名或密码参数即可成功连接上数据库; 5. 执行 SQL 语句更改 `SYSDBA` 用户的密码: ```sql ALTER USER SYSDBA IDENTIFIED BY "new_password"; ``` 6. 关闭数据库实例; 7. 将之前修改过的 `$DAMENG_HOME/dm.ini` 中关于 `SINGLE_USER` 参数恢复原状 (即设置回 `SINGLE_USER=0`); 8. 正常重启数据库服务[^1]. #### 方法二:已知其他具有管理员权限账号的情况 如果有另一个具备足够高权限的账户存在的话,那么就可以直接登录进去执行如下SQL指令完成对 `SYSDBA` 账号的新密码设定工作: ```sql ALTER USER SYSDBA IDENTIFIED BY "Passw0rd!!"[^2]; ``` 请注意替换 `"Passw0rd!!"` 这一部分为你想要设置的具体新密码字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值