无法更改计算引擎的 pg_hba.conf 中的保存

无法更改计算引擎的 pg_hba.conf 中的保存

我想在 Compute Engine 上设置 PostgreSQL,但当尝试更改配置文件 通过sudo nano ../../etc/postgresql/9.3/main/pg_hba.conf我粘贴# IPv4 remote connections for the tutorial: host all all [YOUR_IPV4_ADDRESS]/32 md5我的本地计算机 IP 地址并按下Control+x然后数据未保存

答案1

我尝试按照社区教程中提供的步骤进行操作如何在 Compute Engine 上设置 PostgreSQL未发现任何问题。请记住本教程中提到的一些软件版本已过时,应替换为受支持的版本因此,文件路径应该更新也一样。

请查看以下步骤:

  1. 创建 VM 实例(因为教程中的 Ubuntu 14.04 已经过时,所以我用 Ubuntu 18.04 LTS 将其替换)。

    $ gcloud compute instances create instance-1 --zone=europe-west3-a --machine-type=e2-medium --image=ubuntu-1804-bionic-v20200701 --image-project=ubuntu-os-cloud 
    Created [https://www.googleapis.com/compute/v1/projects/test-prj/zones/europe-west3-a/instances/instance-1].
    NAME        ZONE            MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP    EXTERNAL_IP     STATUS
    instance-1  europe-west3-a  e2-medium                  10.156.15.192  35.246.XXX.YYY  RUNNING
    
  2. 安装 PostgreSQL 并使用 PSQL 完成设置:

    $ sudo apt update
    $ sudo apt upgrade
    $ sudo apt install postgresql postgresql-client postgresql-contrib 
    $ sudo -u postgres psql postgres
    psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
    Type "help" for help.
    
    postgres=# \password postgres
    Enter new password: 
    Enter it again: 
    postgres=# CREATE EXTENSION adminpack;
    CREATE EXTENSION
    postgres=# \q
    $ 
    

    PostgreSQL 9.3 已被 10.12 取代。

  3. 配置PostgreSQL远程访问:

    3.1. 编辑pg_hba.conf

    • 导航ip4.me获取本地计算机(外部)的 IPv4 地址; 本地 PC 的外部 IP
    • 打开文件/etc/postgresql/10/main/pg_hba.conf(由于版本较新,文件路径已更改):
      $ sudo nano /etc/postgresql/10/main/pg_hba.conf
      
    • 向下滚动到文件底部并添加以下行:
      # IPv4 remote connections for the tutorial:
      host    all             all           [YOUR_IPV4_ADDRESS]/32         md5
      
    • 将 [YOUR_IPV4_ADDRESS] 替换为本地计算机的地址:
      # IPv4 remote connections for the tutorial:
      host    all             all             89.64.XXX.YYY/32          md5
      
    • 保存文件并退出编辑器;
    • 检查更改:
      $ sudo cat /etc/postgresql/10/main/pg_hba.conf
      ...
      # Database administrative login by Unix domain socket
      local   all             postgres                                peer
      
      # TYPE  DATABASE        USER            ADDRESS                 METHOD
      
      # "local" is for Unix domain socket connections only
      local   all             all                                     peer
      # IPv4 local connections:
      host    all             all             127.0.0.1/32            md5
      # IPv6 local connections:
      host    all             all             ::1/128                 md5
      # Allow replication connections from localhost, by a user with the
      # replication privilege.
      local   replication     all                                     peer
      host    replication     all             127.0.0.1/32            md5
      host    replication     all             ::1/128                 md5
      # IPv4 remote connections for the tutorial:
      host    all             all             89.64.XXX.YYY/32          md5
      

    3.2. 编辑postgresql.conf

    • 打开文件/etc/postgresql/10/main/postgresql.conf(由于版本较新,文件路径已更改):
      $ sudo nano /etc/postgresql/10/main/postgresql.conf
      
    • 向下滚动到以 开头的行#listen_addresses = 'localhost'
    • 删除#字符以取消注释该行;
    • 替换localhost*('*' 设置使 Postgres 能够监听所有 IP 地址);
    • 保存文件并退出编辑器;
    • 重新启动数据库服务:
      $ sudo service postgresql restart
      $ sudo service postgresql status
        ● postgresql.service - PostgreSQL RDBMS
        Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
        Active: active (exited) since Tue 2020-07-14 09:57:07 UTC; 6s ago
        Process: 7452 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
        Main PID: 7452 (code=exited, status=0/SUCCESS)
      
        Jul 14 09:57:07 instance-1 systemd[1]: Starting PostgreSQL RDBMS...
        Jul 14 09:57:07 instance-1 systemd[1]: Started PostgreSQL RDBMS. 
      

相关内容