众所周知,Oracle数据库是支持操作系统认证的,即在Oracle数据库服务器上,可以执行sqlplus / as sysdba登录数据库。该功能在达梦数据库中也是支持的,但需要手动开启一个数据库参数才可以,默认是关闭的状态。
DM提供数据库身份验证模式和外部身份验证模式来保护对数据库访问的安全。数据库身份验证模式需要利用数据库口令,即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证;外部身份验证模式支持基于操作系统(OS)的身份验证、LDAP身份验证和KERBEROS身份验证。
1.基于操作系统的身份验证
基于OS的身份验证分为本机验证和远程验证,本机验证需要将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服务器才能生效。
2.LDAP身份验证
DM提供对LDAP的支持,主要利用LDAP服务器存储的账户数据信息,验证账户是否是数据库的合法用户。
3.KERBEROS身份验证
KERBEROS是为TCP/IP网络系统设计的可信的第三方认证协议,DM支持KERBEROS身份验证。
4.UKEY身份验证
DM支持UKEY身份验证,通过INI参数CLIENT_UKEY进行UKEY验证设置,默认值为0:
0:支持所有登录方式,是否采用UKEY验证由客户端驱动。当客户端输入UKEY名称和UKEY_PIN则采用UKEY验证,否则不使用UKEY验证;
1:客户端强制使用UKEY验证。
接下来简单介绍下达梦数据库基于操作系统的身份验证的操作方法:
方法一:
基于OS的身份验证需要首先将操作系统用户加入到操作系统的dmdba|dmsso|dmauditor用户组,分别对应数据库的SYSDBA|SYSSSO|SYSAUDITOR用户。
1.修改数据库ini参数。
参数含义:
SQL> SP_SET_PARA_VALUE(2,'ENABLE_LOCAL_OSAUTH',1);
重新启动数据库服务器,使INI参数生效。
2.在操作系统中创建dmdba用户组,并将操作系统用户dmdba添加到dmdba用户组。
以Linux为例:
[root@centos7 ~]# groupadd dmdba
[root@centos7 ~]# usermod -G dmdba dmdba
3.检查dmdba用户环境变量
[root@centos7 ~]# su - dmdba
[dmdba@centos7 ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
alias disql='rlwrap disql'
如果环境变量有问题,可执行以下脚本添加环境变量即可
使用dmdba用户登录执行一下脚本,其中DM_HOME以实际路径为准
echo 'export DM_HOME=/home/dmdba/dmdbms' >> .bash_profile; \
echo 'export PATH=$PATH:$DM_HOME/bin' >> .bash_profile; \
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin' >> .bash_profile; \
source .bash_profile
4.操作系统用户dmdba基于OS的身份验证登录数据库。
以Linux操作系统为例:
[dmdba@centos7 ~]$ disql / as sysdba
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.081(ms)
disql V8
SQL>
方法二:
也可以将操作系统用户加入到操作系统的dmusers用户组来进行基于OS的身份验证,对应数据库的同名用户,即此时数据库中需要存在一个与操作系统用户同名的用户。
例如:操作系统用户dameng基于OS的身份验证登录数据库。
1.在数据库中创建一个操作系统的同名用户,并修改INI参数。
SQL> CREATE USER dameng IDENTIFIED BY "dameng12345";
SQL> SP_SET_PARA_VALUE(2,'ENABLE_LOCAL_OSAUTH',1);
SQL> COMMIT;
重新启动数据库服务器,使INI参数生效。
2. 在操作系统中创建dmusers用户组,并将操作系统用户dameng添加到dmusers用户组。
Windows操作系统下,以管理员身份运行命令提示符工具并执行以下命令:
C:\Windows\system32>net localgroup dmusers /add
C:\Windows\system32>net localgroup dmusers dameng /add
Linux操作系统下:
[dameng@test163 ~]$ sudo groupadd dmusers
[dameng@test163 ~]$ sudo usermod -G dmusers dameng
3. 操作系统用户dameng基于OS的身份验证登录数据库。
以Windows操作系统为例:
D:\dmdbms\bin>disql.exe /@localhost:5236 as users
DM的DIsql、dmfldr、dexp和dimp工具都支持基于操作系统的身份验证登录,
具体登录方式可查看各工具操作手册。