十五openGauss开启远程访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十五openGauss开启远程访问相关的知识,希望对你有一定的参考价值。

一、查询配置文件位置

gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]

node node_ip port instance state
-----------------------------------------------------------------------------------------------
1 gsdb01 192.168.10.131 26000 6001 /opt/huawei/install/data/dn01 P Primary Normal

如上所示,部署了数据库主节点实例的服务器IP地址为192.168.10.131。数据库主节点数据路径"/opt/huawei/install/data/dn01"。
配置文件都存放在/opt/huawei/install/data/dn01下面

二、 配置

1、说明

openGauss数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,会报一些如下的异常:
org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host

要解决这个问题,只需要在openGauss数据库的安装目录下找到pg_hba.conf,找到“# IPv4 local connections:”
在其下加上请求连接的机器IP
host all all 127.0.0.1/32 md5
32是子网掩码的网段;md5是密码验证方法,可以改为trust

1、允许本地使用PGAdmin3登录数据库,数据库地址localhost,用户user1,数据库user1db:
host user1db user1 127.0.0.1/32 md5
2、允许10.1.1.0~10.1.1.255网段登录数据库:
host all all 10.1.1.0/24 md5
3、信任192.168.1.10登录数据库:
host all all 192.168.1.10/32 trust

2、客户端连接配置

vi /opt/huawei/install/data/dn01/pg_hba.conf
# IPv6 local connections:
上面添加
host all all 0.0.0.0/0 sha256

#This file controls: which hosts are allowed to connect
#host DATABASE USER ADDRESS METHOD [OPTIONS]
# METHOD can be "trust", "reject", "md5", "sha256" or "cert".
# "sha256" is preferred since

服务端认证方法
openGauss安全认证方法在 HBA 文件中由数据库运维人员配置,支持trust认证、口令认证和cert认证。
1.trust认证
trust认证意味着采用当前认证模式时,openGauss无条件接收连接请求,且访问请求时无须提供口令。这个方法如果使用不当,可允许所有用户在不提供
口令的情况下直接连入数据库。为保障安全,openGauss当前仅支持数据库超级用户在本地以trust方法登录,不允许远程连接使用trust认证方法。
2.口令认证
openGauss目前主要支持sha256加密口令认证。由于整个身份认证过程中,不需要还原明文口令,因此采用 PBKDF2单向加密算法。其中 Hash函数使用
sha256算法,盐值salt则通过安全随机数生成。算法中涉及的迭代次数可由用户自己视不同的场景决定,需考虑安全和性能间的一个平衡。
为了保留对历史版本的兼容性,在某些兼容性场景下,openGauss还支持 MD5算法对口令进行加密,但默认不推荐。
特别地,openGauss管理员用户在创建用户信息时不允许创建空口令,这意味着非超级用户在访问登录时必须提供口令信息(命令方式或交互式方式)。用
户的口令信息被存放在系统表pg_authid中的rolpassword字段中,如果为空,则表示出现元信息错误。
3.cert认证
openGauss支持使用SSL安全连接通道(在安全认证通道详细介绍)。cert认证表示使用SSL客户端进行认证,不需要提供用户密码。在该认证模式下,客
户端和服务端数据经过加密处理。在连接通道建立后,服务端会发送主密钥信息给客户端以响应客户端的握手信息,这个主密钥将是服务端识别客户端的
重要依据。值得注意的是,该认证方式只支持hostssl类型的规则。
在文中,提到openGauss所支持的 METHOD字段选项包括trust、reject、sha256、cert及gss。除去上述介绍的三种认证方法外,reject选项表示对
于当前认证规则无条件拒绝,一般用于“过滤”某些特定的主机。gss表示使用基于gssapi的kerberos认证,该认证方法依赖kerberosserver组件,一般
用于支持openGauss集群内部通信认证和外部客户端连接认证,外部客户端仅支持gsql(openGauss提供的在命令行下运行的数据库连接工具。)或JDBC
连接时使用。

3、服务端配置

vi /opt/huawei/install/data/dn01/postgresql.conf
#listen_addresses 远程客户端连接使用的数据库主节点ip或者主机名,这个必须设置为具体ip或者0.0.0.0,不然其他机器没法连接,相当于监听
#local_bind_address 当前节点连接openGauss其他节点时绑定的本地IP地址
#password_encryption_type = 2 #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only
#password_encryption_type必须和pg_hba.conf设置的hosts的规则一致,不然加密方式不同,客户端直接连不上

4、重启数据库

1、重启数据库
gs_om -t restart
会有一些warning,暂时忽略
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
Starting cluster.
=========================================
[SUCCESS] gsdb01
2023-03-10 10:21:40.951 640a9434.1 [unknown] 140484474639936 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2023-03-10 10:21:40.951 640a9434.1 [unknown] 140484474639936 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2023-03-10 10:21:40.955 640a9434.1 [unknown] 140484474639936 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (1024 Mbytes) or shared memory (4460 Mbytes) is larger.
=========================================
Successfully started.

2、查看状态
[omm@gsdb01 dn01]$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Normal
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip port instance state
-----------------------------------------------------------------------------------------------
1 gsdb01 192.168.10.131 26000 6001 /opt/huawei/install/data/dn01 P Primary Normal

3、本地连接
gsql -d postgres -p 26000 -U joe -W mysql@123 -h 192.168.10.131

4、使用navicat连接,数据库选择PostgreSQL
直接报错authentication method 10 not support
网上查询是navicat12版本太低,不支持sha256加密,只是测试使用,果断改为md5
vi /opt/huawei/install/data/dn01/pg_hba.conf
host all all 0.0.0.0/0 md5
vi /opt/huawei/install/data/dn01/postgresql.conf
password_encryption_type = 0
重启
gs_om -t restart

5、重新更改用户密码
原来的密码是使用sha256加密的,新的改成了md5,需要重置一下密码
[omm@gsdb01 ~]$ gsql -d postgres -p 26000 -r
gsql ((openGauss 3.1.1 build 70980198) compiled at 2023-01-06 09:27:09 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=# alter user joe identified by Mysql@123; #改成和原来一样的直接报错
ERROR: New password should not equal to the old ones.
openGauss=# alter user joe identified by Mysql@1234; #改成和原来不一样的可以了,但是报MD5不安全
NOTICE: The encrypted password contains MD5 ciphertext, which is not secure.
ALTER ROLE

6、使用navicat可以正常登陆了

以上是关于十五openGauss开启远程访问的主要内容,如果未能解决你的问题,请参考以下文章

如何开启MySQL远程访问权限 允许远程连接

Linux 如何开启MySQL远程访问权限 允许远程连接

如何开启远程访问权限

有没有好用的linux终端工具(CentOS/openGauss)?

mysql 开启远程访问权限

centos mysql开启远程访问