У меня есть экземпляр postgres RDS, к которому мое веб-приложение Node.js, работающее на экземпляре EC2, не может подключиться. Ошибка в журналах моего узла EC2: ошибка: не удалось выполнить аутентификацию по паролю для пользователя «ubuntu».
Я могу подтвердить, что у меня есть правильное имя пользователя, пароль, имя базы данных и т. д., потому что он правильно работает в сборке для разработки на моем компьютере. Я скопировал все параметры .env точно на свою машину ec2 для производственной сборки. При попытке подключения к RDS на веб-странице моего производственного приложения происходит сбой. Я несколько раз перезапускал свой сервер Node.js и перезагружал всю машину ec2. Я подтвердил, что переменные env есть в printenv.
Что бы вы порекомендовали попытаться исправить эту проблему?
РЕДАКТИРОВАТЬ для получения более подробной информации: моя настройка nodejs должна быть правильной, потому что мой сервер nodejs будет вызывать некоторые внешние API, которые не требуют моей базы данных postgres, и эти вызовы работают правильно.
EDIT2: это странно, потому что мое имя пользователя для RDS — postgres, а мое имя пользователя для EC2 — ubuntu. Интересно, есть ли конфликт между переменными env? Я проверил printenv, но ничего не нашел
EDIT3: см. комментарии для моего обходного пути.
Я бы предложил проверить учетные данные базы данных, напрямую подключившись к базе данных RDS с помощью клиента psql на экземпляре EC2.
Проблема заключалась в том, что по какой-то причине pg пытается подключиться к RDS, используя имя пользователя ubuntu вместо postgres, хотя мой код указывает, что он должен подключаться как пользователь postgres. Я думаю, что что-то переопределяет эту конфигурацию, но я не могу понять, что. В итоге я реализовал хакерское решение, в котором я создал нового пользователя в моей базе данных pg с именем ubuntu и предоставил ему доступ для чтения и записи, и это в итоге сработало.