2015-11-10 5 views
0

Мне нужно запустить несколько команд на экземпляре AWS Postgres RDS, который у меня есть. Я не хочу вводить пароль каждый раз. Я пытаюсь использовать файл .pgpass, но у меня возникают ошибки. В первый раз я столкнулся с ошибкой, в которой говорилось, что «роль» ubuntu имя пользователя «не существует». Я вошел в систему как пользователь postgres и создал это имя пользователя. После этого ошибка, я получаю указанную базу данных, не существует. Я чувствую, что эти ошибки не имеют ничего общего с попыткой подключения к экземпляру AWS RDS..pgpass with AWS RDS

psql --host=<awshost> --port=5432 --username=<awsrdsusername> --password --dbname=<dbname запрашивает пароль, а затем регистрирует меня после ввода. Теперь я помещаю файл в /home/<ubuntuusername> под названием .pgpass, который имеет <awshost>:5432:<dbname>:<awsrdsusername>:<password>. Разрешения для этого файла установлены на 0600. Теперь, когда я запустил psql с терминала и выдает ошибку - psql: FATAL: role "<ubuntuusername>" does not exist. Эти шаги описаны в разделе this page.

Может кто-нибудь помочь мне с шагами, чтобы получить файл pgpass для подключения к экземпляру AWS RDS?

+1

Вы правы, они не имеют ничего общего с '.pgpass'. Вам все равно нужно подключиться, используя правильную строку подключения. * all *, который делает файл '.pgpass', позволяет' psql' искать пароль. Убедитесь, что вы можете нормально подключиться. Затем, как только вы сможете, вводя пароль вручную, добавьте файл .pgpass. (-1, вы уже достаточно долго знаете, чтобы указать ** точный текст сообщений об ошибках **, точные команды запускать и т. Д., А не только смутные описания). –

+0

Это были не смутные описания :). Единственной дополнительной частью, которую я пропустил, был «psql: FATAL:», который предшествует остальной части сообщения об ошибке, о котором я упоминал. Попробовав это, я попытался удалить, переустановить и некоторые другие вещи, которые не работали. Я уже могу подключиться вручную. Единственным виновником, о котором я могу думать, является тот факт, что мое местное имя пользователя отличается от моего имени пользователя AWS RDS. – TheComeOnMan

+1

«уже можно подключиться вручную». то есть с паролем? Добавление файла '.pgpass' не может вызвать ошибку, например' role 'myusername "не существует", если одно и то же соединение работает без наличия файла '.pgpass'. Показать ** точные команды запуска **. –

ответ

2

.pgpass не содержит информацию о соединении. Вы, кажется, ожидаете, что после создания файла .pgpass вы можете запустить psql без аргументов, и он будет знать, где подключиться. Это не относится к делу.

Имя хоста, порт и т. Д. Вы помещаете в .pgpass, чтобы PostgreSQL знал, какую строку следует искать при сопоставлении информации о соединении, чтобы найти его пароль.

Если вы запускали:

psql -h something 

для подключения без .pgpass файла, все равно придется запускать то же самое соединить с .pgpass файла.

Если вы запустите psql без аргументов, он подключится к локальному PostgreSQL (если есть), используя текущее имя пользователя unix в качестве имени пользователя postgresql и базы данных для подключения. Вот почему вы получаете сообщение об ошибке.

Если вы хотите изменить соединение по умолчанию, вы можете использовать переменные среды, такие как PGHOST, PGPORT и т. Д. И/или a .pgservice.conf file.

См. the manual, чтобы узнать больше.

+0

Спасибо. Я попробовал 'psql' только с именем хоста, именем db и т. Д., Но он (очевидно) не работал. У меня появилось ощущение, что большинство руководств предполагают, что читатель уже работал с настройкой баз данных раньше. – TheComeOnMan

+0

@Codoremifa Вы не первый человек, которого я видел, неправильно понимают '.pgpass' таким образом. Я посмотрю, нуждается ли руководство в разъяснении. –