Подключение к удаленному серверу postgresql на amazon ec2

Я запустил экземпляр amazon ec2 и установил над ним postgresql 9.1. Затем я отправился в Группа безопасности: quicklaunch-1(there was one moredefault` который я не менял) и открыл порт 5432 TCP, таблица выглядит так:

(Service)   Source  Action
22        0.0.0.0/0         Delete
5432      0.0.0.0/32    Delete
5433      0.0.0.0/32    Delete
6432      0.0.0.0/32    Delete

Я создал базу данных и пользователя . Мой /etc/postgresql/9.1/main/pg_hba.conf выглядит так:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5
host    db_name         user_name       0.0.0.0/0               md5

# "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     postgres                                peer
host    replication     postgres        127.0.0.1/32            md5
host    replication     postgres        ::1/128                 md5

и /и т. д./в PostgreSQL/9.1/основные/данных PostgreSQL.conf выглядит так:

# - Connection Settings -
listen_addresses = '*'
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost', '*' = all
                                        # (change requires restart)
port = 5432                             # (change requires restart)

затем я пытаюсь подключиться к удаленная машина следующим образом:

psql -h ec2-xxx-xx-xxx-xxx.compute-1.amazonaws.com -d <database_name> -U <username>

где ec2-xxx-xx-xxx-xxx.compute-1.amazonaws.com это мой публичный DNS.

вышеуказанная команда не приводит ни к какому соединению, как я могу подключиться?

3 ответов


в этой таблице:

5432      0.0.0.0/32    Delete
5433      0.0.0.0/32    Delete
6432      0.0.0.0/32    Delete 

в CIDRs похоже, вы не разрешаете любой ИС. Не должны ли они быть 0.0.0.0/0 вместо этого, как то, что у вас есть для порта 22 (ssh)?


Я нашел решение этой проблемы. Необходимы две вещи.

  1. используйте текстовый редактор для изменения pg_hba.conf. Найдите хост линии все 127.0.0.1 / 0 md5. Сразу под ним добавьте эту новую строку: host all all 0.0.0.0 / 0 md5

  2. редактирование данных PostgreSQL в PostgreSQL.файл conf:

    используйте текстовый редактор для изменения postgresql.conf. Найдите строка, начинающаяся с #listen_addresses = 'localhost'. Раскомментируйте строку, удалив#, и измените localhost на . Теперь строка должна выглядеть так: listen_addresses = ' ' # какой IP-адрес(ы) для прослушивания;.

теперь просто перезапустите службу postgres, и она подключится


вашей команде psql нужна опция a-W, которая позволяет ввести пароль для пользователя БД и опцию a-p, а затем номер порта postgres (5432 по умолчанию)

ура!