返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

配置服务端远程连接
进行远程连接前,
需要在部署数据库节点的机器上设置允许客户端访问数据库,
并配置
远程连接。
对于GBase 8c 主备式场景,
需要在数据主节点上进行;
分布式场景下,需要在读写CN
或主DN 节点上进行,根据实际需要选择。
操作步骤

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
11
以下步骤需要在GBase 8c 所在主机上执行。
步骤1 以操作系统用户gbase,登录数据库节点。
步骤2 配置使用的客户端认证方式,
允许客户端以某一用户连接到数据库。
请参考7.1.1 配
置客户端接入认证。
步骤3 配置listen_addresses
listen_addresses 参数用于配置TCP-IP 允许监听的地址,首先查看参数值,确认是否已
经添加客户端机器的IP。如果已经添加,则忽略此步骤;如果没有添加客户端IP,则需要
添加以允许其访问数据库节点。
(1)
使用gs_guc 命令,查看数据库节点的listen_addresses 配置。
gs_guc check <-Z coordinator/datanode/gtm> <-N NODE_NAME> {-I INSTANCE_NAME | -D
DATADIR }
-c "listen_addresses"
注意
GBase 8c 主备式不涉及-Z 参数;分布式场景下必须指定-Z 参数。
例如,在主备式主DN(节点IP 为192.168.142.146)上查询listen_addresses,返回:
[gbase@gbasehost ~]$ gs_guc check -I all -c "listen_addresses"
expected guc information: gbase8c: listen_addresses=NULL:
[/home/gbase/clusters/gbase8c/datanode/dn1_1/postgresql.conf]
gs_guc check: gbase8c: listen_addresses='localhost,192.168.142.146':
[/home/gbase/clusters/gbase8c/datanode/dn1_1/postgresql.conf]
Total GUC values: 1. Failed GUC values: 0.
The value of parameter listen_addresses is same on all instances.
listen_addresses='localhost, 192.168.142.146'
例中返回listen_addresses='localhost, 192.168.142.146',可以看出目前listen_addresses 参
数值并没有客户端IP。
(2)
将要添加的客户端IP 追加到listen_addresses 后面,多个配置项之间用英文逗号分
隔。
gs_guc set <-Z coordinator/datanode/gtm> <-N NODE_NAME> {-I INSTANCE_NAME | -D
DATADIR } -c "listen_addresses=……"
注意

GBase 8c 主备式不涉及-Z 参数;分布式场景下必须指定-Z 参数。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
12

分布式场景下,需保证同DN 组、同类型节点参数值一致,建议将listen_addresses
参数值直接设置为*,表示允许任意IP 访问数据库。
例如,在主备式场景下追加IP 地址10.11.12.13。
[gbase@gbasehost ~]$ gs_guc set -I all -c
"listen_addresses='localhost,192.168.142.146,10.11.12.13'"
步骤4 配置pg_hba.conf,添加数据库主节点IP 和客户端IP。详细说明,参见7.1.1 配置客
户端接入认证。
(1)
在pg_hba.conf 配置文件中添加数据库主节点IP,其中initial_user 为数据库初始用
户名称。
gs_guc reload <-Z coordinator/datanode/gtm> <-N NODE_NAME> {-I INSTANCE_NAME |
-D DATADIR } -h "host all initial_user hostip/32 trust"
例如,添加主DN 节点192.168.142.146。
[gbase@gbasehost ~]$ gs_guc reload -Z datanode -I all -h "host all gbase

参数说明:设置跨集群的本端侦听和鉴权的第五个节点信息。
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:字符串。其中空字符串表示没有配置第五个节点信息。
默认值:空字符串

 摘要:
gbase_real_connect()尝试与运行在主机上的GBase数据库引擎建立连接。
在你能够执行需要有效GBase 连接句柄结构的任何其他API 函数之前,
gbase_real_connect()必须成功完成。
 语法:
GBASE * gbase_real_connect(GBASE *gbase,
const char *host,





const char *user,





const char *passwd,





const char *db,





unsigned int port,





const char *unix_socket,





unsigned long clientflag);
 参数:






GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 35 -
gbase

调用gbase_real_connect()之前,
必须调用gbase_init()来



初始化GBASE 结构。
host

必须是主机名或IP 地址。如果“host”是NULL 或字符串



"localhost",连接将被视为与本地主机的连接。如果操作系



统支持套接字(Unix)或命名管道(Windows)
,将使用它们



而不是TCP/IP 连接到服务器。如果使用支持集群IP 路由的



GBase C API 连接GBase 8a 数据库集群时,host 可以是包含



几个集群节点IP 的字符串,IP 之间以“;”进行分割。这样



可以使用GBase C API 的集群IP 路由功能。
user

用户的GBase 登录ID。如果“user”是NULL 或空字符串"",




用户将被视为当前用户。
passwd
用户的密码
db

数据库名称。
如果db 为NULL,
连接会将默认的数据库设为该



值。
port

如果“port”不是0,其值将用作TCP/IP 连接的端口号。注



意,
“host”参数决定了连接的类型。
unix_socket 如果unix_socket 不是NULL,该字符串描述了应使用的套接



字或命名管道。注意,
“host”参数决定了连接的类型。
clientflag 其值通常为0,
但是,
也能将其设置为下述标志的组合,
以允



许特定功能:
标志名称
标志描述
CLIENT_COMPRESS
使用压缩协议。
CLIENT_FOUND_RO
WS
返回发现的行数(匹配的)
,而不是受影响的行数。


GBase 8a 程序员手册C API 篇


- 36 -

南大通用数据技术股份有限公司
标志名称
标志描述
CLIENT_IGNORE_S
PACE
允许在函数名后使用空格。使所有的函数名成为保
留字。
CLIENT_INTERACT
IVE
关闭连接之前,允许interactive_timeout(取代
了wait_timeout)秒的不活动时间。客户端的会话
wait_timeout 变量被设为会话
interactive_timeout 变量的值。
CLIENT_LOCAL_FI
LES
允许LOAD DATA LOCAL 处理功能。
CLIENT_MULTI_ST
ATEMENTS
通知服务器,客户端可能在单个字符串内发送多条
语句(由‘;’隔开)
。如果未设置该标志,将禁止
多语句执行。
CLIENT_MULTI_RE
SULTS
通知服务器,客户端能够处理来自多语句执行或存
储程序的多个结果集。如果设置了
CLIENT_MULTI_STATEMENTS,将自动设置它。
CLIENT_NO_SCHEM
A
禁止db_name.tbl_name.col_name 语法。它用于
ODBC。如果使用了该语法,它会使分析程序生成错
误,在捕获某些ODBC 程序中的缺陷时,它很有用。

CLIENT_ODBC
客户端是ODBC 客户端。它将gbased 变得更为ODBC
友好。
CLIENT_SSL
使用SSL
(加密协议)

该选项不应由应用程序设置,
它是在客户端库内部设置的。

 返回值:
如果连接成功,返回GBASE*连接句柄。如果连接失败,返回NULL。对于成
功的连接,返回值与第1 个参数的值相同。
 错误
CR_CONN_HOST_ERROR

无法连接到GBase 服务器。
CR_CONNECTION_ERROR

无法连接到本地GBase 服务器。



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 37 -
CR_IPSOCK_ERROR


无法创建IP 套接字。
CR_OUT_OF_MEMORY


内存溢出。
CR_SOCKET_CREATE_ERROR
无法创建Unix 套接字。
CR_UNKNOWN_HOST


无法找到主机名的IP 地址。
CR_VERSION_ERROR


协议不匹配
CR_NAMEDPIPEOPEN_ERROR
无法在Windows 平台下创建命名管道。
CR_NAMEDPIPEWAIT_ERROR
在Windows 平台下等待命名管道失败。
CR_NAMEDPIPESETSTATE_ERROR 在Windows平台下获取管道处理程序失败。

CR_SERVER_LOST


如果connect_timeout > 0,而且在连接








服务器时所用时间长于connect_timeout







秒,
或在执行init-command时服务器消失。