本地操作系统认证登录

DM技术交流QQ群:940124259

一、简述

平常很多人用惯Oracle数据库本地登录认证(即本地系统登录认证),长时间疑惑达梦数据库同类似的功能也可行吗?答案肯定是可以的。
达梦数据库目前对身份认证登录的支持方式,如下:

  1. 本地操作系统的身份验证;
  2. 远程操作系统的身份验证;
  3. LDAP 身份验证;
  4. KERBEROS 身份验证;
  5. UKEY身份验证。

今天由帅小宝针对本地操作系统认证登录的小功能进行着重地讲解一番。
本地操作系统认证登录经本人实践得知,此功能仅在通用机环境有效,利用达梦数据库内部程序disql/dimp/dexp/dmfldr/jdbc驱动中各自固有的格式
(数据库特殊用户SYSDBA/SYSSSO/SYSAUDITOR/USERS),
再者结合本地操作系统用户和用户组,可完美进行“来如风去无踪”登录达梦数据库系统(尤其是在忘记SYSDBA账户密码情况下,急需登录进去维护数据库)。

开启本地操作系统认证登录的首次操作前提,开启本地验证参数:ENABLE_LOCAL_OSAUTH 手动参数 取值范围:0或1
在这里插入图片描述

注意事项:

  1. 在客户知情的条件下,并且允许开启本地操作系统认证登录功能。
  2. 客户的生产环境允许短暂停机重启数据库,手工配置操作系统认证的参数。
  3. 该数据库处于通用机环境。
  4. 有操作系统root或有用户管理权限的特权的用户。

二、实战案例

2.1 忘记SYSDBA密码咋整

实验环境 数据库版本:1-1-126-20.09.04-126608-ENT
操作系统: CentOS Linux release 7.7.1908 (Core)

特别友情提示:

DM后期新版本修改ENABLE_LOCAL_OSAUTH参数的操作方式比较特殊,而且默认情况下它不再属于普通参数,并且不会出现在dm.ini之中。

之前很多同事请教过一个同样的问题:why 修改参数无效? 真实原因,公司为了安全着想,此参数写入数据库内部(可以理解为内部数据字典,SYSTEM.DBF),不再是简单dm.ini直接修改重启数据库生效。

正确姿势:
alter system set 'ENABLE_LOCAL_OSAUTH'=1 spfile;
sf_set_system_para_value('ENABLE_LOCAL_OSAUTH', 1, 0, 2);

步骤1:dm.ini手工打开 ENABLE_LOCAL_OSAUTH 参数

在这里插入图片描述

步骤2:系统添加组dmdba
[root@dmdb ~]# groupadd dmdba
[root@dmdb ~]# grep dmdba /etc/group
dmdba:x:10002:
步骤3:将数据库安装用户加入dmdba附加组

(一般规范用户:dmdba)

[root@dmdb ~]# id dmdba
uid=10001(dmdba) gid=10001(dinstall) groups=10001(dinstall)
[root@dmdb ~]# usermod -a -G dmdba dmdba
[root@dmdb ~]# id dmdba
uid=10001(dmdba) gid=10001(dinstall) groups=10001(dinstall),10002(dmdba)
[root@dmdb ~]# getent group dmdba
dmdba:x:10002:dmdba
[root@dmdb ~]#


# 多提供几种加组方式
groupmems -g dmdba -a dmdba
gpasswd -a dmdba dmdba
步骤4:disql免密登录,修改新密码
[root@dmdb ~]# su - dmdba
Last login: Thu Jul  8 09:53:04 CST 2021 on pts/2
[dmdba@dmdb ~]$ disql / as sysdba
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 6.957(ms)
disql V8
SQL> select user;
LINEID     USER()
---------- ------
1          SYSDBA

used time: 13.579(ms). Execute id is 2909.
SQL> select uid;
LINEID     UID
---------- -----------
1          50331649

used time: 2.185(ms). Execute id is 2910.
SQL> alter user sysdba identified by "SYSDBA123";
executed successfully
used time: 26.784(ms). Execute id is 2911.
SQL>
步骤5:验证新密码登录
[dmdba@dmdb ~]$ disql SYSDBA/SYSDBA123

Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 12.319(ms)
disql V8
SQL> SELECT USER;

LINEID     USER()
---------- ------
1          SYSDBA

used time: 11.713(ms). Execute id is 3009.

2.2 普通用户开启本地系统认证

实验环境 数据库版本:1-1-190-21.03.12-136419-ENT
操作系统: CentOS Linux release 7.7.1908 (Core)
注意:126版没有USERS这一项关键字,所以普通用户不能成功。

步骤1: 添加用户组与用户
[root@dmdb ~]# groupadd dmusers
[root@dmdb ~]# useradd -g dinstall -G dmusers spiker
步骤2:数据库内部添加系统用户同名的数据库账户
[dmdba@dmdb bin]$ ./disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 9.087(ms)
disql V8
SQL> create user spiker identified by "spiker";
executed successfully
used time: 52.635(ms). Execute id is 3409.

## 设置密码是为了符合SQL语法,否则会报错。
## 如果使用外部身份认证identified externally 需在安全版本环境下执行正确生效。
/*
如:SQL> create user spiker2 identified externally;
create user spiker2 identified externally;
[-5630]:Error in line: 1
Current DM Server is not a secure version, you can't do this operation.
used time: 0.743(ms). Execute id is 0.
*/
## 本人是开发版(测试版),关于更为安全管理的操作受限。
步骤3:验证spiker用户免密登录
[spiker@dmdb ~]$ cd /home/dmdba/dmdbms/bin_190
[spiker@dmdb bin_190]$ ./disql / as users

Server[LOCALHOST:05236]:mode is normal, state is open
login used time : 8.292(ms)
disql V8
SQL> select id_code();

LINEID     ID_CODE()
---------- ----------------------------
1          1-1-190-21.03.12-136419-ENT

used time: 8.297(ms). Execute id is 3700.
SQL> select user;

LINEID     USER()
---------- ------
1          SPIKER

used time: 1.536(ms). Execute id is 3701.
SQL> select uid,user,sysdate;

LINEID     UID         USER() SYSDATE
---------- ----------- ------ -------------------
1          50331750    SPIKER 2021-07-08 12:35:22

used time: 1.906(ms). Execute id is 3702.
SQL>

三、归纳总结

  1. 达梦数据库不同的小版本,功能上可能有点差异,细心阅读理解和实践,就拿参数ENABLE_LOCAL_OSAUTH说,手册描述是静态参数,可是真实操作起来却是手动参数。
  2. 普通用户对应关系,本地系统用户与数据库内部账户名一一对应,并且隶属于dmusers用户组。
  3. 数据库内置用户与系统用户组对应关系,如:SYSDBA/dmdba,SYSSSO/dmsso,SYSAUDITOR/dmauditor。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值