简单介绍
达梦数据库基于操作系统身份验证的登录方式类似Oracle的操作系统认证登录方式(/ as sysdba)。
达梦数据库基于操作系统的身份验证分为本机验证和远程验证,本机验证需要将DM配置文件dm.ini的ENABLE_LOCAL_OSAUTH参数设置为1(缺省为0);而远程验证需要将DM配置文件dm.ini的ENABLE_REMOTE_OSAUTH参数设置为1(缺省为0),表示支持远程验证,同时还要将dm.ini的ENABLE_ENCRYPT参数设置为1(缺省为1),表示采用SSL安全连接。这三个参数均为静态参数,可以使用系统过程SP_SET_PARA_VALUE进行修改,重启数据库服务生效。
这里主要介绍基于操作系统的身份验证在数据库服务器本机上进行登录(即本机验证)。
使用说明
数据库版本(DM V8 202108)
基于操作系统的身份验证的准备工作:
1、需要在操作系统上创建4个用户组,分别为:dmdba、dmsso、dmauditor、dmusers,分别对应数据库中的SYSDBA、SYSSSO、SYSAUDITOR、普通用户。如果只是需要SYSDBA用户基于操作系统本地验证登录,则只需要创建dmdba组即可。
2、创建好用户组之后,需要将操作系统用户加入到对应的组。另外,如果是将操作系统用户加入到dmusers组,则数据库中需要存在一个与操作系统用户同名的数据库用户。
常用的一般是数据库管理员(即SYSDBA)进行基于操作系统的本地身份验证登录。
3、基于操作系统身份验证登录无需输入数据库用户和密码。
4、操作系统登录几种用户类型说明
基于操作系统本机身份验证登录的语法:
./disql / as <SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO>
或者
./disql /@<connect_identifier> as <SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO>
其中:<connect_identifier> 为ip:port或者dm_svc服务名
几种类型说明:
(1) SYSDBA
表示登录的用户为SYSDBA用户。
登录命令: ./disql / as sysdba 或者 ./disql /@ip:port as sysdba
需要执行登录的操作系统用户属于dmdba组。
(2) SYSSSO (用于安全版数据库,企业版可以不用)
表示登录的用户为SYSSSO用户。
登录命令:./disql / as syssso 或者 ./disql /@localhost:5236 as sysdba
需要执行登录的操作系统用户属于dmsso组。
(3) SYSAUDITOR
表示登录的用户为SYSSSO用户。
登录命令:./disql / as sysauditor 或者 ./disql /@localhost:5236 as sysauditor
需要执行登录的操作系统用户属于dmauditor组。
(4) users
表示登录的用户类型为普通用户,非数据库系统用户。
登录命令:./disql / as users 或者 ./disql /@localhost:5236 as users
需要执行登录的操作系统用户属于dmusers组,且数据库中存在和执行登录的操作系统普通用户同名的数据库用户。
(5) AUTO
表示按顺序自动匹配数据库用户类型,即按照语法中的“SYSDBA|SYSSSO|SYSAUDITOR|USERS”顺序自动匹配登录的数据库用户类型。
命令:./disql / as auto 或者 ./disql /@localhost:5236 as auto
需要执行登录操作的操作系统用户满足上述(1) (2) (3) (4)四个中的一个或者多个所需的条件,如果都不满足则会报错。
使用测试
测试SYSDBA等系统用户操作系统本地验证登录
1、设置ENABLE_LOCAL_OSAUTH参数值为1,并重启数据库服务
SQL> select name,value from v$parameter where name='ENABLE_LOCAL_OSAUTH';
行号 name VALUE
---------- ------------------- -----
1 ENABLE_LOCAL_OSAUTH 0
SQL> SP_SET_PARA_VALUE(2,'ENABLE_LOCAL_OSAUTH',1);
DMSQL 过程已成功完成
---重启数据库服务
[dmdba@localhost bin]$ ./DmService restart
Stopping DmService: [ OK ]
Starting DmService: [ OK ]
---查看参数值为1
[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.434(ms)
SQL> select name,value from v$parameter where name='ENABLE_LOCAL_OSAUTH';
行号 name VALUE
---------- ------------------- -----
1 ENABLE_LOCAL_OSAUTH 1
2、操作系统上创建dmdba组,并将执行本地登录的操作系统用户加入到dmdba组
(1)创建dmdba组
[root@localhost ~]# groupadd -g 10010 dmdba
(2)将操作系统用户加入到dmdba组(作为副组)
本环境达梦数据库软件安装以及维护等使用的是操作系统用户dmdba,所以这里是将dmdba用户加入到dmdba组。如果达梦数据库软件以及维护的操作系统用户不是使用dmdba,而是其他用户,则将其他用户加入到dmdba组。
[root@localhost ~]# usermod -a -G dmdba dmdba
[root@localhost ~]# id dmdba
用户id=1004(dmdba) 组id=1000(dinstall) 组=1000(dinstall),10010(dmdba)
3、测试SYSDBA操作系统本地验证登录
[dmdba@localhost bin]$ ./disql / as sysdba
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.312(ms)
disql V8
SQL> select user();
行号 USER()
---------- ------
1 SYSDBA
已用时间: 2.785(毫秒). 执行号:600.
SQL>
[dmdba@localhost bin]$ ./disql /@localhost:5236 as sysdba
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 3.160(ms)
disql V8
SQL> select user();
行号 USER()
---------- ------
1 SYSDBA
已用时间: 2.949(毫秒). 执行号:700.
SQL>
4、配置SYSAUDITOR用户本地操作系统验证登录
操作步骤与配置SYSDBA步骤相同。
(1)操作系统创建dmauditor组
[root@localhost ~]# groupadd -g 10011 dmauditor
(2)将操作系统用户添加到dmauditor组(作为副组)
本环境达梦数据库软件安装以及维护等使用的是操作系统用户dmdba,所以这里是将dmdba用户加入到dmauditor组。如果达梦数据库软件以及维护的操作系统用户不是使用dmdba,而是其他用户,则将其他用户加入到dmauditor组。
[root@localhost ~]# usermod -a -G dmauditor dmdba
[root@localhost ~]# id dmdba
用户id=1004(dmdba) 组id=1000(dinstall) 组=1000(dinstall),10010(dmdba),10011(dmauditor)
(3)测试SYSAUDITOR基于操作系统本地身份验证登录
[dmdba@localhost bin]$ ./disql / as sysauditor
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 9.147(ms)
disql V8
SQL> select user();
行号 USER()
---------- ----------
1 SYSAUDITOR
已用时间: 5.676(毫秒). 执行号:800.
SQL>
[dmdba@localhost bin]$ ./disql /@localhost:5236 as sysauditor
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 3.028(ms)
disql V8
SQL> select user();
行号 USER()
---------- ----------
1 SYSAUDITOR
已用时间: 4.785(毫秒). 执行号:900.
SQL>
如果未将dmdba加入到dmauditor组中,则使用上面基于操作系统本地身份验证的方式登录会报错,提示“[-2512]:未经授权的用户.”:
测试普通用户操作系统本地验证登录
测试使用的操作系统普通用户为user01。
1、操作系统创建dmusers组
[root@localhost ~]# groupadd -g 10020 dmusers
2、将操作系统user01用户加入到dmusers组
[root@localhost ~]# usermod -a -G dmusers user01
[root@localhost ~]# id user01
用户id=1006(user01) 组id=1006(user01) 组=1006(user01),10020(dmusers)
3、数据库中创建user01数据库用户
SQL> CREATE USER USER01 IDENTIFIED BY "123456789";
SQL> GRANT RESOURCE,PUBLIC,VTI,SOI TO USER01;
4、切换到操作系统user01用户,并使用disql登录数据库
注意:操作系统用户user01,需要有能够正常进入到$DM_HOME/bin下执行命令的权限。
[user01@localhost ~]$ cd /home/dmdba/dm46/bin
[user01@localhost bin]$ ./disql /@localhost:5236 as users
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 5.442(ms)
disql V8
SQL> select user();
行号 USER()
---------- ------
1 USER01
已用时间: 2.828(毫秒). 执行号:1400.
[user01@localhost bin]$ ./disql / as users
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.852(ms)
disql V8
SQL> select user();
行号 USER()
---------- ------
1 USER01
已用时间: 2.644(毫秒). 执行号:1500.
如果执行登录命令的操作系统用户只有加入了dmusers组中,还可以使用auto类型登录。
[user01@localhost bin]$ ./disql / as auto
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 6.920(ms)
disql V8
SQL> select user();
行号 USER()
---------- ------
1 USER01
已用时间: 2.527(毫秒). 执行号:1600.
SQL>
Windows环境下本地操作系统验证登录测
上面测试是基于Linux系统环境,Windows系统环境下步骤与Linux上的步骤相同,只是Windows操作系统创建用户组以及将用户加入组中的操作命令有所不同。
以管理员身份运行cmd,执行下面操作:
1、创建dmdba组并将当前用户加入到dmdba
C:\Windows\system32>net localgroup dmdba /add
命令成功完成。
C:\Windows\system32>net localgroup dmdba 23741 /add
命令成功完成。
---可以使用net user或者在相应的功能页面查看系统当前存在的用户,本环境是23741用户
2、数据库设置ENABLE_LOCAL_OSAUTH参数值为1,并重启数据库服务
SQL> sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);
---然后重启数据库服务
3、使用 / as sysdba登录数据库
4、其他用户类型测试
其他用户类型操作步骤方法均和上面相同。
更多资讯可以上达梦技术社区了解:https://eco.dameng.com