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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重启后,db2无法从客户端连接相关的知识,希望对你有一定的参考价值。

我使用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。

答案

使用客户端身份验证通常是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身份运行。

另一答案

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

由于/ 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

另一答案
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.

以上是关于重启后,db2无法从客户端连接的主要内容,如果未能解决你的问题,请参考以下文章

DB2数据库显示未启动,但是可以连接到

如何用DB2客户端连接远程数据库

蓝牙服务器重启后 BLE 配对出现问题

linux系统下 重启db2数据库

每次重启后都会添加片段(Android)

从 DB2 视图中获取数据