添加用户对 DB2 的访问权

Joh*_*pas 2 db2

我已经在 Red hat 盒子中安装了 DB2 10.1。在安装过程中,我被要求创建几个用户(db2inst1、db2fenc1 等)。我一直在使用 db2inst1 来执行 DB2 的所有操作,它运行得非常好。sqllib 文件位于

/home/db2inst1/sqllib

安装文件位于

/opt/ibm/db2/V10.1/

所有用户都可以访问这两个文件夹。我现在想与另一个用户(即“john”)一起执行 DB2 操作。鉴于 db2 使用主机的底层用户/密码,我将组 dasadm1 和 ds2iadm1 添加到“john”用户(即 db2inst1 中列出的用户)。

uid=500(john) gid=500(john) groups=500(john),101(dasadm1),102(db2iadm1)

我可以使用用户“john”正确输入 db2 cmd

[john@rhel6 java]$ /home/db2inst1/sqllib/bin/db2

但是当我以用户“john”的身份运行我的 Java 应用程序时,出现以下错误:

SQLException: com.ibm.db2.jcc.am.SqlException: [jcc][10389][12245][4.13.127] Failure in loading native library db2jcct2, java.lang.UnsatisfiedLinkError: db2jcct2 (Not found in java.library.path): ERRORCODE=-4472, SQLSTATE=null

如果我与用户 db2inst1 运行相同的 Java 应用程序,则不会出现此错误。两个用户的库路径完全相同。知道出了什么问题吗?

Chr*_*ich 5

我的直觉是您没有更新用户“john's”配置文件来调用 DB2 配置文件设置。如果您不这样做,那么您将无法“访问”DB2,即使二进制文件在那里。

因此,您想要做的是编写一个脚本来检查您的 DB2 实例“home”配置文件脚本,在您的情况下它将是 /home/db2inst1/sqllib/db2profile ,如果它在那里,则调用它。

if [ -f /home/db2inst1/sqllib/db2profile ] ; then
     . /home/db2inst1/sqllib/db2profile
     if [ ! $? = 0 ] ; then
          echo "Error setting up DB2 instance access"
     else
          echo "DB2 instance access set up"
     fi
fi
Run Code Online (Sandbox Code Playgroud)