人大金仓 数据库KingbaseES 新特性——KSQL在兼容oracle连接格式下支持密码中有@符号

关键字:

KingbaseES、ksql、oracle

1.产品新特性

Ksql 一般的登录方式包括,Ksql 是一个常规 KingbaseES 客户端应用。为了连接到数据库,ksql需要知道连接的目标数据库的名称、主机名以及该服务器的服务的端口号。在这个过程中,在实际的应用过程中,服务器可能会使用较长的密码字符串,在登录时较为不便。kingbaseES支持ksql使用”用户名/密码@服务名”的方式来登录ksql方便后期产品的实际使用。在实际的应用中,需要先在本地~/.sys_service.conf文件中配置端口等信息,比如:

[kingbase]
dbname=test
user=system
password=123@456
port=54449

然后可以通过 ./ksql system/@kingbase 的方式来对ksql进行登录。登录过程中如果设置了密码,则ksql端输入的密码优先级更高。这种方式使得ksql操作具有更大的灵活性,应用场景更加广泛。

2.Oracle中ksql 通过服务进行登录

语法格式: ksql username[/password][@[//][host][:port/]servicename]

参数说明:

  • username: 表示用户名
  • password: 表示用户密码
  • servicename: 表示服务名称
  • host: 表示网络地址 IP
  • port: 表示端口号

其中 host、port 和 servicename 等信息是在 sys_service.conf 文件中配置的内容。

  1. 用户名和密码中不含有特殊字符字符如 \、/或引号等特殊时,在终端可以直接输入,不需要被引号引起来。这样的密码不会对命令产生歧义,可以正常的解析。kes将连接串末尾找到最后一个@符号,在解析密码时将这个符号以前的字符串都视为密码。所以含有@符号的密码也能正常解析。

  2. 用户名或密码中含有‘\’特殊字符时,需要使用引号将其引起来,否则会导致命令中的特殊字符和密码的字符产生冲突。

3.通过shell 进行ksql 的登录

DELETE FROM

当需要管理大量的服务,可以设置脚本文件对大量的机器进行验证处理登录ksql进行验证。

#!/bin/bash
while read -r line
do 
    uplist=(${line//,/})
    dbuser=${uplist[0]}
    dbpw=${uplist[1]}
dbport=${uplist[2]}
dbhost=${uplist[3]} 
    command5="$path ${dbuser}/${dbpw}@kingbase"
#command5="$path ${dbuser}/@$dbhost:$dbport/kingbase"
    #echo \\\q | eval $command5  
done < userpw_list
同样,可以借助linux的expect 工具进行交互。实例如下:
#!/usr/bin/expect
spawn ./ksql -U system test -p 51125 -W -f 1.sql
expect "Password:" 
send "123456\r" 
expect eof

#!/bin/bash
while read -r line
do 
    uplist=(${line//,/})
    dbuser=${uplist[0]}
    dbpw=${uplist[1]}
    echo "#!/usr/bin/expect" > expect.sh
    eval echo "spawn ./ksql $dbuser/\'$dbpw\'@kingbase" >> expect.sh 
    echo 'expect "help"' >> expect.sh 
    echo 'send "exit \r"' >> expect.sh 
    echo 'expect eof ' >> expect.sh 
    chmod +x expect.sh
    cat expect.sh
    ./expect.sh
done < userpasswd

值得注意的是,Port 如果包含在单引号中,service 信息将不能被正确的解析,Host 信息包含在引号里,service 信息不能被正确解析,会导致登录失败。如果用户名或者是用户密码包含 @ 或/等特殊字符,在脚本中,shell可能无法正确解析密码中包括的特殊字符如引号等。建议使用如下方式:’” username”/” password” @servicename。将用户名和密码明确的分离开来。 更多信息,参见https://help.kingbase.com.cn/v8/index.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值