[db2inst1@localhost ~]$ db2 connect to test2 user 用户名 using 密码
SQL1639N The database server was unable to perform authentication because
security-related database manager files on the server do not have the required
operating system permissions. SQLSTATE=08001
数据库服务器无法执行认证,因为服务器上与安全性相关的数据库管理器文件没有必需的操作系统许可权。
官网上的解释:
说明
DB2 数据库系统要求您的实例和数据库目录以及这些目录中的文件至少具有最低级别的操作系统许可权。由 DB2 数据库管理器创建实例和数据库目录之后,许可权是正确的,更改这些许可权可能会导致 DB2 数据库管理器功能失败。对于由非 root 用户安装的实例以及基于操作系统的认证,DB2 文件许可权的复杂性会提高。
如果与安全性相关的 DB2 数据库管理器可执行文件没有所需要的许可权,使得数据库管理器无法执行与远程连接认证相关的任务,就会返回此消息。
有多种原因会导致这些与安全性相关的文件可能没有所需要的许可权,其中包括下列原因:
DB2 实例是由非 root 用户安装的实例,并且尚未使用 db2rfe 命令来启用基于操作系统的认证
意外更改了 DB2 数据库管理器文件的操作系统许可权
用户响应
请采用下列其中一种方式对此消息作出响应:
如果实例是由非 root 用户安装的实例,那么使用 db2rfe 命令来启用基于操作系统的认证。
以超级用户身份运行以下命令,以将此实例的 DB2 数据库管理器二进制文件的所有操作系统许可权复位:
db2iupdt -k <instance-name>
其中 <instance-name> 是受影响的实例的名称。
请注意,db2rfe 命令和 db2iupdt 命令都要求先停止数据库管理器实例,然后重新启动此实例。
解决方案:
-
停止数据库管理器实例
[db2inst1@localhost ~]$ db2 force application all[db2inst1@localhost ~]$ db2stop [db2inst1@localhost ~]$ db2start
以超级用户身份运行以下命令,以将此实例的 DB2 数据库管理器二进制文件的所有操作系统许可权复
位:
[root@localhost bin64]# cd /opt/ibm/db2/V10.5/instance/
[root@localhost instance]# ./db2iupdt -k db2inst1
再执行连接操作 就不会报错了~~