大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。
前言
相信很多用管了 Oracle 数据库的 DBA,很喜欢用 sqlplus / as sysdba
快速连接到数据库的方式。但是,刚安装好的达梦数据库执行 disql / as sysdba
却会报错:
[dmdba@dm8:~]$ disql / as sysdba
[-2512]:未经授权的用户.
disql V8
用户名:
密码:
初看好像不支持,但是达梦其实也是支持通过操作系统认证使用免密的方式登录数据库,不过需要人为配置一下,本文就介绍一下如何使用免密方式连接达梦数据库。
开启免密登录
达梦数据库在默认安装时是不开启免密登录的,可能是为了保护数据库的安全考虑。
当然,达梦也是支持免密登录,只不过需要满足以下两个条件:
- 1、需要新建用户组:dmdba,并将 dmdba 用户添加到组中。
- 2、配置
ENABLE_LOCAL_OSAUTH
参数为 1
添加 dmdba 组
首先,需要创建 dmdba 组,然后将组权限附加给 dmdba 用户:
[root@dm8:/root]# groupadd dmdba
[root@dm8:/root]# usermod -a -G dmdba dmdba
配置参数 ENABLE_LOCAL_OSAUTH
ENABLE_LOCAL_OSAUTH
参数是一个隐藏参数,因此想要免密登录需要先设置参数然后重启生效:
-- 查看参数值,当 ENABLE_LOCAL_OSAUTH=0 时登录数据库,均不输入内容,dmdba 用户无法登录数据库。
SQL> select para_name,para_value,file_value from v$dm_ini where para_name ='ENABLE_LOCAL_OSAUTH';
行号 PARA_NAME PARA_VALUE FILE_VALUE
---------- ------------------- ---------- ----------
1 ENABLE_LOCAL_OSAUTH 0 0
-- 修改为 1
SQL> sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);
DMSQL 过程已成功完成
-- 也可以使用 alter system 设置
SQL> alter system set 'ENABLE_LOCAL_OSAUTH' = 1 spfile;
DMSQL 过程已成功完成
重启数据库生效:
[dmdba@dm8:~]$ DmServiceDMSERVER restart
注意:修改此参数需要拥有 dba
权限,当忘记 SYSDBA
密码时数据库内无其他拥有 dba
权限的用户时,无法通过以上方式更改ENABLE_LOCAL_OSAUTH
参数值。
免密登录
## 默认端口为 5236
[dmdba@dm8:~]$ disql / as sysdba
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 7.330(ms)
disql V8
SQL> select name from v$database;
行号 NAME
---------- ------
1 DAMENG
## 如果有多个数据库实例,可以指定端口访问
[dmdba@dm8:~]$ disql /@localhost:5236 as sysdba
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 5.325(ms)
disql V8
SQL>
今天的国产数据库小知识分享到这就结束了。