
# 通过命令行连接FlexusRDS for PostgreSQL实例
#### 操作场景
FlexusRDS for PostgreSQL实例购买完成后，可以先登录到Flexus云服务器X实例，在Flexus云服务器X实例上安装PostgreSQL客户端，然后通过psql命令行连接到实例。
- [通过客户端连接FlexusRDS for PostgreSQL实例（15及以下版本）]
  1. [登录与FlexusRDS实例在同一区域下的Flexus云服务器X实例](https://support.huaweicloud.com/usermanual-flexusx/server_login_0002.html)。
  
  2. 安装PostgreSQL客户端。 PostgreSQL社区提供了针对不同操作系统的[客户端安装方法](https://www.postgresql.org/download/)。通过操作系统的安装工具直接下载安装。此安装方式比较简单，但是对ECS操作系统有要求，只有PostgreSQL社区中支持的操作系统才可以使用该安装方式。
     使用操作系统默认安装，当前使用的Linux操作系统是CentOS 7，通过工具安装最高版本是15版本。
     图1获取安装工具   
     ![](https://support.huaweicloud.com/usermanual-flexusrds/zh-cn_image_0000002462222785.png)
     执行[安装](https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm)命令：
     ```
     sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
     sudo yum install -y postgresql15-server
     ```
     查看是否安装成功：
     ```
     psql -V
     ```
     图2安装成功   
     ![](https://support.huaweicloud.com/usermanual-flexusrds/zh-cn_image_0000002428744118.png) 
  
  3. 在Flexus云服务器X实例上执行以下命令连接FlexusRDS for PostgreSQL实例。 **psql --no-readline -U** \<*user* \>**-h** \<*host* \>**-p** \<*port* \>**-d** \<*datastore* \>**-W**
     示例：
     **psql --no-readline -U root -h 192.168.0.44 -p 5432 -d postgres -W**
     表1参数说明 
     | 参数              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
     |:---|:---|
     | \<*host*\>      | - 内网连接（推荐）：单击实例名称，在"概览"页面获取的内网地址。  - 公网连接：单击实例名称，在"概览"页面获取的弹性公网IP。绑定弹性公网IP的操作，请参见[FlexusRDS for PostgreSQL实例绑定和解绑弹性公网IP](https://support.huaweicloud.com/usermanual-flexusrds/pg_05_0021.html)。 使用弹性公网IP连接数据库实例时，必须要将弹性公网IP和5432端口加入安全组"sg-default-smb"的入方向规则。具体操作，请参见[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)。    说明： Flexus云服务器X实例和FlexusRDS for PostgreSQL实例在同一区域、同一VPC下时，推荐使用内网连接，安全性更高。 不能通过内网地址访问FlexusRDS for PostgreSQL实例时，使用公网访问。 |
     | *\<port\>*      | 5432。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
     | \<*user*\>      | root。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
     | \<*datastore*\> | postgres。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
        
     
  
  4. 出现如下提示时，输入root账号对应的密码。
     ```
     Enter password:
     ```
     
   
- [通过源码连接FlexusRDS for PostgreSQL实例（对版本没有限制）]
  1. [登录与FlexusRDS实例在同一区域下的Flexus云服务器X实例](https://support.huaweicloud.com/usermanual-flexusx/server_login_0002.html)。
  
  2. 安装PostgreSQL客户端。 [源码安装方式](https://www.postgresql.org/docs/16/installation.html)，该安装方式对RDS for PostgreSQL实例的版本以及ECS的操作系统没有限制。
     下面以Huawei Cloud EulerOS 2.0镜像的ECS为例，安装PostgreSQL 16.4版本客户端。
     图3查看ECS镜像   
     ![](https://support.huaweicloud.com/usermanual-flexusrds/zh-cn_image_0000002462222781.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-flexusrds/public_sys-resources/note_3.0-zh-cn.png)
        不指定--prefix，表示默认路径为"/usr/local/pgsql"，因为只安装客户端采用最简安装。
        图4编译安装   
        ![](https://support.huaweicloud.com/usermanual-flexusrds/zh-cn_image_0000002428584286.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
        ```
        图5测试psql可用   
        ![](https://support.huaweicloud.com/usermanual-flexusrds/zh-cn_image_0000002462102897.png) 
      
  
  3. 在Flexus云服务器X实例上执行以下命令连接FlexusRDS for PostgreSQL实例。 **psql --no-readline -U** \<*user* \>**-h** \<*host* \>**-p** \<*port* \>**-d** \<*datastore* \>**-W**
     示例：
     **psql --no-readline -U root -h 192.168.0.44 -p 5432 -d postgres -W**
     表2参数说明 
     | 参数              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
     |:---|:---|
     | \<*host*\>      | - 内网连接（推荐）：单击实例名称，在"概览"页面获取的内网地址。  - 公网连接：单击实例名称，在"概览"页面获取的弹性公网IP。绑定弹性公网IP的操作，请参见[FlexusRDS for PostgreSQL实例绑定和解绑弹性公网IP](https://support.huaweicloud.com/usermanual-flexusrds/pg_05_0021.html)。 使用弹性公网IP连接数据库实例时，必须要将弹性公网IP和5432端口加入安全组"sg-default-smb"的入方向规则。具体操作，请参见[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)。    说明： Flexus云服务器X实例和FlexusRDS for PostgreSQL实例在同一区域、同一VPC下时，推荐使用内网连接，安全性更高。 不能通过内网地址访问FlexusRDS for PostgreSQL实例时，使用公网访问。 |
     | *\<port\>*      | 5432。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
     | \<*user*\>      | root。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
     | \<*datastore*\> | postgres。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
        
     
  
  4. 出现如下提示时，输入root账号对应的密码。
     ```
     Enter password:
     ```
     
   
