重启后,db2无法从客户端连接

问题描述 投票:5回答:3

我使用db2stop force停止了我的数据库。启动后重新启动备份,之后我无法再从客户端连接到db:使用命令

db2使用“user”连接到“dbname”

SQL30082N安全处理失败,原因为“42”(“ROOT CAPABILITY REQUIRED”)。 SQLSTATE = 08001

密码和用户名是正确的。当我在服务器连接时使用命令

db2连接到“dbname”

要么

db2连接到“dbnmae”用户“user”

要么

db2连接到“dbname”用户db2inst1

工作得很好。我真的很困惑。任何帮助非常感谢谢谢。

到目前为止我尝试了什么:

db2 get dbm cfg | grep -i auth用于本地授权的GSS插件 (LOCAL_GSSPLUGIN)=服务器连接验证 (SRVCON_AUTH)= NOT_SPECIFIED数据库管理器身份验证 (AUTHENTICATION)= SERVER编目允许无权限 (CATALOG_NOAUTH)=没有可信客户端身份验证 (TRUST_CLNTAUTH)= CLIENT绕过联合身份验证 (FED_NOAUTH)=否

切换到客户端但没有使用

db2使用身份验证客户端更新dbm cfg

Update:

尽管这个问题已经很久了,但对这个问题有一个坚实的答案会很棒。嗨locojay,你是怎么经营的? :-)

我在Windows PC中遇到SQL30082N原因码24问题,今天我们在AIX服务器上遇到了同样的问题。

我用谷歌搜索了几个小时,并没有找到一个快乐的答案,这与在服务器和客户端中拥有相同名称的用户有关。 IMO它不适用于我,因为我遇到了一个与域隔离的VBox(没有网络)。

我的情况:我以用户db2admin安装了DB2,没有安全性。然后我将DBADM授予VIRTUALUSR01并为该用户提供了密码。

  db2 connect to TheBase

工作良好。但

  db2 connect to TheBase user VIRTUALUSR01 using TheRightPassword 

返回SQL30082N,原因码为24。

db2
3个回答
3
投票

使用客户端身份验证通常是Bad Idea(TM)。那是因为您现在依赖于您可能无法控制的机器进行身份验证。如果我想破坏你的系统,我可以在本地创建一个新用户,比如db2inst1或VIRTUALUSR01或Administrator,用我知道的密码,然后用它来破坏数据库。但是,如果组织中没有人对其自己的计算机具有root / administrator权限,则可以使客户端身份验证起作用。但只需要插入自己的个人笔记本电脑,您的数据库就会面临风险。

而是,检查文件的权限。如果你以root身份安装,那么~db2inst1 / sqllib / security / db2c [hk] pw(假设db2inst1的实例ID)应该是setuid root。如果没有,请对应该修复权限的实例(./db2iupdt db2inst1)运行db2iupdt。

如果你没有root权限(“非root安装”)安装,我怀疑,因为你似乎已经有了这个工作,你需要阅读关于非root安装的DB2文档及其局限性 - 我不知道我自己使用非root安装,所以我不熟悉它们。但是,应该有一个set-root脚本,您可以使用它来启用setuid root,当然,您必须以root身份运行。


0
投票

我有同样的问题,并通过以下方式解决。

由于/ etc / shadow文件而出现问题。如果使用SHA创建用户的密码哈希,则DB2无法对该用户进行身份验证或授权。您需要MD5来散列该用户的密码。

如果您使用的是Fedora或RedHat Linux,请首先更改密码的散列方法:

# authconfig –-passalgo md5 –-update

然后删除并重新创建用户:

# userdel userName
# useradd userName
# passwd userName

如果您使用AIX或任何其他Linux发行版,authconfig将无法正常工作。因此,不是使用passwd userName,而是发出以下命令:

# usermod --password `openssl passwd desiredPassword`

之后,将使用MD5生成属于userName的密码哈希。

现在为该用户授予用户权限:

# su - db2inst1
(db2inst1)$ db2 connect to databaseName
(db2inst1)$ db2 GRANT DBADM with dataaccess with accessctrl on database to user userName

我希望它对你也有用。

感谢Honza为他的solution


0
投票
Solutions to specific problem causes described previously in
     this message are:
     1. Run DB2IUPDT <InstName> to update the instance.

     2. Ensure that the username created is valid. Review the DB2
        General Naming Rules.

     3. Ensure that catalog information is correct.
© www.soinside.com 2019 - 2024. All rights reserved.