启动与关闭数据库实例
做任何事情之前,首先要启动数据库实例
切换到
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开机启动