使用gsql客户端连接数据库
(1)确认连接信息
需要知道待连接的数据库服务所在主机的IP地址和监听端口信息:
从图中不难发现:
OG1:内部存储IP为192.168.1.100 端口号:15400(主库)
OG2:192.168.1.101 端口号:15400 (从库)
还可以通过如下命令查看postgresql.conf配置文件,从而得知实例的端口信息:
cat /data/og1/postgresql.conf | grep port
(2)gsql本地连接(omm用户进行操作)
当我们知道数据库节点的端口号和IP地址之后,就可以连接数据库了,openGauss数据库安装成功之后默认创建名为postgres的数据库,第一次可以连接它:
===========================================================
补充:
如果你想更改omm的密码,执行如下命令:
alter role omm identified by "Zhougood123@" replace "Zhou@123";
复制
输入上面命令之后报错:
ERROR: The old password is invalid.
提示原密码错误,在安装时,输入的密码就是’Zhougood123@’,感觉没问题,尝试了是不是双引号的问题,确实不是;后来再看下语法,研究它的含义,是不是旧密码名和新密码位置写反了,一尝试就对了,果然是密码写反了。语法如下:
alter role omm identified by '新密码' replace '旧密码'; //单引号,双引号都可以。
复制
输入:\q退出gsql工具。
===========================================================
(3)远程连接
1)创建普通用户
远程连接禁止使用数据库初始化用户连接,所以先本地连接并创建一个普通用户,用来进行远程连接:
gsql -d postgres -p 15400;
复制
创建用户的语法:
create user jack password "Test@123";
复制
输入\q退出。
2)添加客户端认证策略:
a,再打开一台虚拟机:主机名:zbm IP:10.0.0.10,做远程连接测试:
gs_guc set -N all -I all -h "host all jack 10.0.0.10/24 sha256"; //(实质是在配置文件pg_hba.conf中添加一条规则)
复制
b,在zbm主机上安装gsql客户端:
由于zbm主机安装过mogdb,所以zbm主机上是有gsql工具的,只需要切换到zbm主机上的omm用户即可使用gsql。
c,如果没有则需要下载安装包
root用户身份登录到客户端主机
mkdir /tmp/tools //安装包存放路径
复制
d,获取相应的工具包,并上传到/tmp/tools下,并解压
连接工具包:openGauss-2.1.0-CentOS-64bit-Libpq.tar.gz
cd /tmp/tools tar -zxvf openGauss-2.1.0-CentOS-64bit-Libpq.tar.gz
复制
e,将数据库主节点的数据库安装目录下的bin目录拷贝到客户端/tmp/tools下:
[root@OG1 ~]# scp -r /opt/huawei/install/app/bin root@10.0.0.10:/tmp/tools
复制
f,设置环境变量
vim ~/.bashrc export PATH=/tmp/tools/bin:$PATH export LD_LIBRARY_PATH=/tmp/tools/lib:$LD_LIBRARY_PATH source ~/.bashrc
复制
3)执行连接
gsql -d postgres -p 15400 -U jack -W Test@123 -h 10.0.0.100
复制
===========================================================
报错:
[root@zbm ~]# gsql -d postgres -p 15400 -U jack -W Test@123 -h 10.0.0.100 gsql: could not connect to server: Operation now in progress Is the server running on host "10.0.0.100" and accepting TCP/IP connections on port 15400?
复制
无法连接服务器,提示检查:数据库服务器是否运行在10.0.0.100主机上,并且在端口15400上接受远程连接。
解决过程:
1.网络是否连通:经过ping,网络是连通的
2.数据库服务是否开启,连接信息是否一致:开启了且一致
3.在数据库主节点使用jack用户进行本地连接
gsql -p 15400 -d postgres -U jack -W Test@123
确实可以登录,说明用户名,密码和端口号信息都是正确的
4.说明主机IP地址出现了问题。
分析:数据库主节点的IP确实是10.0.0.100(外网IP),或者数据库主节点不支持10.0.0.100进行远程连接
5.查看数据库配置文件postgresql.conf
vim /data/og1/postgresql.conf 经查看: listen_addresses = 'localhost,192.168.1.100' 数据库主节点监听地址为127.0.0.1和192.168.1.100,怪不得无法连接 修改成如下值,也就是添加10.0.0.100这个地址: listen_addresses = 'localhost,192.168.1.100,10.0.0.100'
复制
保存退出,两个节点都要修改。并重启数据库:
gs_om -t restart
然后再次连接,就成功了。
使用下面这个命令也可以查看相应端口监听的地址:
netstat -lntup | grep 15400
总结:
当连接的基本信息都满足之后,都无法连接,说明数据库有什么连接限制之类的。这时不妨看一下数据库的配置文件:pg_hba.conf和postgresql.conf.
那为什么不能用192.168.1.100这个地址进行连接呢?因为ping都ping不通,谈何连接。这个地址是内网IP,而且客户端与它不在同一个网段。
这时我会想到,用从库使用内网进行远程连接:
openGauss数据库禁止使用trust方式进行远程连接,可以对/data/og1/pg_hba.conf配置文件做一些修改,将trust改为sha256,如下:
将:host all all 192.168.1.101/32 trust
改为:host all all 192.168.1.101/32 sha256
保存退出。并重启数据库服务
gsql -t restart
然后就可以使用从库远程连接主库了:
===========================================================
评论
