Назад | Перейти на главную страницу

невозможно изменить сохранение в pg_hba.conf вычислительного движка

Я хочу настроить PostgreSQL на Compute Engine, но при попытке изменить pg_hba.conf по 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 тогда данные не сохраняются

Я пытался выполнить шаги, указанные в руководстве сообщества Как настроить PostgreSQL на Compute Engine и проблем не обнаружил. Имейте в виду, что некоторые версии программного обеспечения, упомянутые в этом руководстве, устарели и должны быть заменены поддерживаемыми и, как следствие, пути к файлам должны быть обновлены также.

Пожалуйста, взгляните на мои шаги ниже:

  1. Создайте экземпляр виртуальной машины (поскольку 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-адрес вашего локального компьютера (внешнего);
    • открыть файл /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.