
# 使用gsql连接
gsql是GaussDB提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能，还提供了若干高级特性，便于用户使用。本节只介绍如何使用gsql连接数据库，关于gsql使用方法的更多信息请参见《工具参考》中"数据库连接工具 \> gsql连接数据库"。
#### 注意事项
缺省情况下，客户端连接数据库后处于空闲状态时会根据GUC参数session_timeout的默认值自动断开连接。如果要关闭超时设置，设置GUC参数session_timeout为0即可。
#### 前提条件
已联系管理员获取连接信息。
#### 获取驱动包
下载[表1]中的驱动包和驱动包校验包。
 表1驱动包下载列表 
| 版本       | 下载地址                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|
| V2.0-8.x | [驱动包](https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1772024234272/GaussDB_driver.zip) [驱动包校验包](https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1772024234272/GaussDB_driver.zip.sha256) |
   
为了防止软件包在传递过程或存储期间被恶意篡改，下载软件包时需下载对应的校验包对软件包进行校验，校验方法如下：
- Linux操作系统软件包完整性校验：
  1. 上传软件包和软件包校验包到虚拟机的同一目录下。
  
  2. 执行如下命令，校验软件包完整性。 **cat** *GaussDB_driver.zip.sha256* **\| sha256sum --check**
     如果回显OK，则校验通过。
     ```
     GaussDB_driver.zip: OK
     ```
     
   

- Windows操作系统软件包完整性校验：
  1. 使用快捷键"Win+R"打开"运行"窗口。 在"打开"栏，输入"cmd"，按"Enter"回车，打开命令行页面。
  
  2. 执行以下命令，获取驱动包的Hash值。
     certutil -hashfile *{* *驱动包本地目录* *}* \\*{驱动包名}* sha256
     - {*驱动包本地目录*}：请根据实际下载目录进行替换。例如：C:\\Users
     
     - {*驱动包*名}：请根据实际下载的驱动包名进行替换。例如：GaussDB_driver.zip
     
     
     示例：certutil -hashfile C:\\Users\\GaussDB_driver.zip sha256
     
  
  3. 将[2]获取到的Hash值和[表1]中获取到的驱动包校验包的Hash值进行比较。
     - 若一致则通过校验。
     
     - 若不一致，请重新下载驱动包，重复[1]\~[3]进行校验。
      
   
 
#### 远程连接数据库
1. 完成远程连接配置，请联系管理员处理。
2. 在客户端机器上，上传驱动包并配置gsql的执行环境变量。 
   1. 登录客户端机器。
   
   2. 创建"/tmp/tools"目录（"/tmp/tools"目录仅为示例，也可创建其他目录）。
      ```
      mkdir /tmp/tools
      ```
      
   
   3. 获取驱动包中的"GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gz"工具包并上传到"/tmp/tools"路径下。
      ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
      - 软件包相对位置为安装时所放位置，根据实际情况填写。
      
      - 不同的操作系统，工具包文件名称会有差异。请根据实际的操作系统类型选择对应的工具包。
        
   
   4. 解压文件。
      ```
      cd /tmp/tools
      tar -zxvf GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gz
      ```
      
   
   5. 设置环境变量。 打开"\~/.bashrc"文件。
      ```
      vi ~/.bashrc
      ```
      在其中输入如下内容后，使用":wq!"命令保存并退出。
      ```
      export PATH=/tmp/tools/bin:$PATH
      export LD_LIBRARY_PATH=/tmp/tools/lib:$LD_LIBRARY_PATH
      ```
      
   
   6. 使环境变量配置生效。
      ```
      source ~/.bashrc
      ```
      
   
   
   
   
3. 连接数据库。 
   数据库安装完成后，会默认生成名称为postgres的数据库。
   ```
   gsql -d postgres -h 10.10.0.11 -U jack -p 8000
   Password for user jack:
   ```
   postgres为需要连接的数据库名称，10.10.0.11为CN所在的服务器IP地址，jack为登录数据库的用户名，8000为CN的端口号，上述示例中，连接的服务器的IP和端口也可以替换成DN服务器IP和端口。gsql支持使用域名代替IP地址。
   在多CN数据库实例环境中，当需要跳过故障CN节点时，可以使用gsql连接到正常状态的CN节点。
   以3个CN的数据库实例为例，三个CN节点的IP:port分别是10.10.0.11:8000、10.10.0.12:8002和10.10.0.13:8004，执行以下命令：
   ```
   gsql -d postgres -h 10.10.0.11,10.10.0.12,10.10.0.13 -U jack -p 8000,8002,8004
   ```
   gsql会按从前往后的顺序依次连接三个IP:port，如果当前连接的IP:port不是正常状态的CN节点，则尝试连接下一个IP:port，直到成功连接到正常状态的CN节点为止。可通过设置PGTARGETSESSIONATTRS环境变量的值来选择连接到不同类型的节点，更多信息请参见《工具参考》中"数据库连接工具 \> gsql连接数据库"章节host参数的说明。
   以下命令演示了使用IPv6地址连接数据库：
   ```
   gsql -d postgres -h 2407:c182:14f0:594:er63:49c5:493q:594c -U jack -p 8000
   ```
   ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   - 上述示例中，jack用户为数据库初始化用户创建的普通用户。
   
   - 默认禁止使用数据库初始化用户进行远程连接数据库，开启集群内部kerberos认证时，允许初始化用户在集群内部进行远程连接。
    
   
   
 
