如何使用 Ksql 连接金仓 KingbaseES 数据库服务器
Ksql 介绍
ksql 是 KingbaseES 数据库客户端的命令行程序,它允许用户与 KingbaseES 数据库建立连接,并在命令行环境下执行 SQL 语句和管理数据库。
ksql 也是 KingbaseES 数据库服务端的一个组件,在安装 KingbaseES 数据库时,默认也会安装 ksql。
Ksql 连接 KingbaseES 数据库服务器时,可以使用如下两种方式。
1)在命令行中直接提供连接所需的所有信息:IP、TCP端口号、数据库名数据库用户名 (身份认证信息、如数据库用户口令)。
2)Ksql使用服务名(servicename)文件(包含IP、端口、数据库名)进行连接。
Ksql 使用命令行选项
Ksql 使用下面的选项来标识要连接的目标KingbaseES数据库服务器。
-h:指定数据库服务器主机或socket目录(默认:"本地接口")。
-p:指定数据库服务器的端口(默认:"54321")。
-d:指定要连接的数据库 (默认:"kingbase")。
-U:指定数据库用户名(默认:"kingbase")。
Ksql 使用服务名
可以在 KingbaseES 数据库客户端的主机上创建一个服务名文件来简化客户端与服务器之间的会话连接。服务名文件的名字一般为.sys_service.conf。
如果是 Linux 操作系统,服务名配置文件一般位于用户的主目录下。
如果是 Windows 操作系统,可以设置用户环境变量 KINGBASE_SERVICEFILE 指定服务名配置文件的位置(如C:\Users\zqf\sys_service.conf)。
语法格式:
ksql username[/password][@[//][host][:port/]servicename]
参数说明:
- username: 表示用户名
- password: 表示用户密码
- servicename: 表示服务名称
- host: 表示网络地址 IP
- port: 表示端口号
其中 host、port和servicename 等信息是在 sys_service.conf 文件中配置的内容。例如:
[kingbase]
host=192.168.0.1
dbname=test
port=54321
其它可配置参数可参见《KingbaseES客户端编程接口指南-DCI》中服务的配置方法与参数说明章节。
优先级说明:
由于sys_service.conf文件可能存在不同的位置,ksql需要按照如下的顺序(优先级依次降低)寻sys_service.conf并获取连接数据库的信息:
- KINGBASE_SERVICEFILE环境变量
- ~/.sys_service.conf
- KINGBASE_SYSCONFDIR环境变量
- SYSCONFDIR/sys_service.conf
- /etc
Ksql 使用案例
1、使用SOCKET方式登录数据库
--在服务器端不使用“-h”选项登录数据库并查看前会话的客户端IP和端口
$ ksql -d test -U system
# SELECT inet_client_addr(),inet_client_port();
# select sys_backend_pid();
2、使用 TCP/IP 方式登录数据库
--在服务器端使用“-h”选项登录数据库,并查看当前会话的客户端IP和端口。
$ ksql -d test -U system -h 192.168.40.111 -p 54321
# SELECT inet_client_addr(),inet_client_port();
# select sys_backend_pid();
--使用连接串方式登录数据库并查看当前会话的客户端IP和端口。
$ ksql 'hostaddr=192.168.40.111 port=54321 user=system dbname=test'
# SELECT inet_client_addr(),inet_client_port();
# select sys_backend_pid();
--使用服务名方式登录数据库。
--(1)修改服务配置文件~/.sys_service.conf文件。
$ vim ~/.sys_service.conf
$ cat ~/.sys_service.conf
[test]
host=192.168.40.111
dbname=test
port=54321
--(2)配置用户环境变量KINGBASE_SERVICEFILE。
$ vim ~/.bash_profile
$ cat ~/.bash_profile |grep KINGBASE_SERVICEFILE
export KINGBASE_SERVICEFILE=/home/kingbase/.sys_service.conf
$ source ~/.bash_profile
--(3)使用服务名登录数据库。
$ ksql system/kingbase@test
注意:KingbaseES 数据库的一个服务名不支持连接到多个数据库。用户可以配置多个服务名来访问不同的数据库。如果在数据库服务名中配置了用户密码,则使用该服务名指定的用户名连接指定的数据库时,系统不再提示输入密码。
添加举例:
--修改服务配置文件~/.sys_service.conf文件。
$ vim ~/.sys_service.conf
--添加如下内容
[kingbase]
host=192.168.40.111
dbname=kingbase
port=54321
password=kingbase
--使用服务名登录数据库。
$ ksql system/kingbase@test
3、Ksql 引用环境变量进行快速登录
--未设置环境变量前执行ksql登录:命令行很长。
$ ksql -d test -U system -h 192.168.40.111 -p 54321
# SELECT inet_client_addr(),inet_client_port();
--Ksql引用环境变量进行快速登录。
$ vim ~/.bash_profile
export KINGBASE_HOST=192.168.40.111
export KINGBASE_PORT=54321
export KINGBASE_DATABASE=test
export KINGBASE_USER=system
$ ksql test system
# SELECT inet_client_addr(),inet_client_port();
# SELECT inet_server_addr(),inet_server_port();
# SELECT current_database(),current_user;




