# 通过内网连接TaurusDB for PostgreSQL实例（Linux方式）
TaurusDB for PostgreSQL实例购买完成后，可以先登录到Linux弹性云服务器，在ECS上安装PostgreSQL客户端，然后执行psql命令行通过PostgreSQL内网IP连接到实例。
#### 步骤1：购买ECS
1. [登录管理控制台](https://console.huaweicloud.com/ecm/?locale=zh-cn#/ecs/manager/vmList)，查看是否有弹性云服务器。
   - 有Linux弹性云服务器，执行[3]。
   
   - 无Linux弹性云服务器，执行[2]。
   
   
   图1ECS实例   
   ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002284345902.png "点击放大") 
2. 购买弹性云服务器时，选择Linux操作系统，例如CentOS。
   由于需要在ECS下载PostgreSQL客户端，因此需要为ECS绑定弹性公网IP（EIP），并且选择与TaurusDB for PostgreSQL实例相同的区域、VPC和安全组，便于TaurusDB for PostgreSQL和ECS网络互通。
   购买Linux弹性云服务器请参考《弹性云服务器用户指南》中"[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)"章节。
   
3. 在ECS实例基本信息页，查看ECS实例的区域和VPC。
   图2ECS基本信息   
   ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002284345918.png "点击放大")
   
   
4. 在TaurusDB实例概览页，查看TaurusDB for PostgreSQL实例的区域和VPC。
   图3查看区域和VPC   
   ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002340637809.png "点击放大")
   
   
5. 确认ECS实例与TaurusDB for PostgreSQL实例是否处于同一区域、同一VPC内。
   - 是，执行[步骤2：测试连通性并安装PostgreSQL客户端]。
   
   - 如果不在同一区域，请重新购买实例。不同区域的云服务之间内网互不相通，无法访问实例。请就近选择靠近您业务的区域，可减少网络时延，提高访问速度。
   
   - 如果不在同一VPC，可以修改ECS的VPC，请参见[切换虚拟私有云](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0504.html)。
    
 
 #### 步骤2：测试连通性并安装PostgreSQL客户端
1. 登录ECS实例，请参见《弹性云服务器用户指南》中"[Linux弹性云服务器远程登录（VNC方式）](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0136.html)"。
2. 在TaurusDB"实例管理"页面，单击实例名称进入"实例概览"页面。
3. 在"网络信息"模块获取实例的读写内网地址和数据库端口。
   图4获取读写内网地址和端口   
   ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002306846474.png "点击放大")
   
   
4. 在ECS上测试是否可以正常连接到TaurusDB for PostgreSQL实例内网地址的端口。
   ```
   curl -kv 192.168.0.7:5432
   ```
   - 如果可以通信，说明网络正常。
   
   - 如果无法通信，请检查安全组规则。
     - 查看ECS的安全组的出方向规则，如果目的地址不为"0.0.0.0/0"且协议端口不为"全部"，需要将TaurusDB for PostgreSQL实例的内网IP地址和端口添加到出方向规则。
     
     - 查看TaurusDB for PostgreSQL的安全组的入方向规则，需要将ECS实例的私有IP地址和端口添加到入方向规则，具体操作请参见[设置安全组规则](https://support.huaweicloud.com/usermanual-taurusdb-pg/taurusdb_03_0019.html)。
      
    
5. 安装PostgreSQL客户端。 [源码安装方式](https://www.postgresql.org/docs/16/installation.html)，该安装方式对TaurusDB for PostgreSQL实例的版本以及ECS的操作系统没有限制。
   下面以Huawei Cloud EulerOS 2.0镜像的ECS为例，安装PostgreSQL 16.4版本客户端。
   图5查看ECS镜像   
   ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002306481712.png "点击放大")
   1. 要支持SSL，需要在ECS上提前下载openssl。
      ```
      sudo yum install -y openssl-devel
      ```
      
   
   2. 在[官网](https://www.postgresql.org/ftp/source/)获取代码下载链接，使用wget直接下载安装包或者[下载到本地](https://ftp.postgresql.org/pub/source/v16.4/postgresql-16.4.tar.gz)后上传到ECS上。
      ```
      wget https://ftp.postgresql.org/pub/source/v16.4/postgresql-16.4.tar.gz
      ```
      
   
   3. 解压安装包。
      ```
      tar xf postgresql-16.4.tar.gz
      ```
      
   
   4. 编译安装。
      ```
      cd postgresql-16.4
      ./configure --without-icu --without-readline --without-zlib --with-openssl
      make -j 8 && make install
      ```
      ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/public_sys-resources/note_3.0-zh-cn.png)
      不指定--prefix，表示默认路径为"/usr/local/pgsql"，因为只安装客户端采用最简安装。
      图6编译安装   
      ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002340480701.png "点击放大") 
   
   5. 配置环境变量，在"/etc/profile"文件中添加以下内容。
      ```
      export PATH=/usr/local/pgsql/bin:$PATH
      export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
      source /etc/profile
      ```
      
   
   6. 测试psql是否可使用。
      ```
      psql -V
      ```
      图7测试psql可用   
      ![](https://support.huaweicloud.com/usermanual-taurusdb-pg/figure/zh-cn_image_0000002306641444.png "点击放大") 
    
 
#### 步骤3：使用命令行连接实例（非SSL加密）
1. 在ECS上执行以下命令连接TaurusDB for PostgreSQL实例。 **psql --no-readline -h** *\<host\>* **-p** *\<port\>* **"dbname=** *\<database\>* **user=** *\<user\>* **"**
   示例：
   **psql --no-readline -h 192.168.0.7 -p 5432 "dbname=postgres user=root"**
   表1参数说明 
   | 参数           | 说明                                                                     |
   |:---|:---|
   | *\<host\>*     | 在[3]中获取的内网IP地址。      |
   | *\<port\>*    | 在[3]中获取的数据库端口，默认5432。 |
   | *\<database\>* | 需要连接的数据库名，默认的管理数据库是postgres。                                          |
   | *\<user\>*     | 管理员账号root。                                                               |
      
   
2. 出现如下提示时，输入数据库账号对应的密码。
   ```
   Password:
   ```
   未出现报错提示，表示连接成功。
   
 
