如何使用 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;




