Linux db2创建数据库并进行客户端连接问题

本文记录了在Linux环境下使用DB2数据库时遇到的创建数据库和客户端连接问题。由于系统加密算法差异(SHA512与SHA256),导致DB2连接验证失败。解决方案是修改/etc/pam.d/system-auth文件中密码加密方式为SHA256,然后更新DB2用户的密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1

启动与关闭数据库实例

做任何事情之前,首先要启动数据库实例

切换到

db2inst1

用户,执行

db2start

启动数据库实例。

$ db2start

SQL1063N DB2START processing was successful.

若需要,可运行下面的命令来关闭数据库实例

首先在

db2inst1

用户下强制关闭实例上的所有应用程序。

$ db2 force applications all

关闭数据库实例。

$ db2stop

SQL1064N DB2STOP processing was successful.

2

创建数据库

$ su - db2ins1

$ db2 create database test1

DB20000I The CREATE DATABASE command completed successfully.

[amarsoft@localhost ~]$ su root
密码:
[root@localhost amarsoft]# su db2inst
su: user db2inst does not exist
[root@localhost amarsoft]# su db2inst1
[db2inst1@localhost amarsoft]$ db2 create db test
SQL1005N  The database alias "test" already exists in either the local
database directory or system database directory.
[db2inst1@localhost amarsoft]$ db2 connect to test




3远程连接

出现
Connection authorization failure occurred. Reason: Local security service non-retryable error


authorizationsecurityservicedb2加密算法
以上的异常是我在连接DB2的时候出现的,很奇怪,因为DB2用了这么长时间从来没出现过这个问题,单从异常消息来看,很明显是DB2连接时验证失败了,说白了用户名和密码的问题,问题是为什么会出现这样的问题,明明用户名和密码是正确的。
研究之后发现是系统差异,密码不可能以明文方式存储在系统中,都是通过相应的加密算法之后保存的,DB2采用的是SHA256加密,而不少高版本的Linux默认的加密算法已经是SHA512了,这样系统创建的DB2用户密码通过SHA512保存在系统中,连接时DB2通过SHA256将密码加密后与保存在系统中的密码比对,结果当然是失败,解决方案如下:
打开/etc/pam.d/system-auth文件,找到第二行passwd配置,将sha512改成sha256,保存;

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha256 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so



重新运行passwd db2用户,设置密码;
成功;
这样将系统的加密方式换成sha256再更新一下保存的密码就可以了。


如果出现连接不成功问题
[jcc][t4][2043][11550][3.58.82] 异常 java.net.ConnectException:打开端口 60,000 上服务器 /192.168.100.228 
的套接字时出错,消息为:拒绝连接。 ERRORCODE=-4499, SQLSTATE
=08001

CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
firewall:
systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值