Подключитесь к Postgres, используя Docker - PullRequest
0 голосов
/ 07 апреля 2020

Я немного потерян. У меня есть postgres база данных, работающая в docker контейнере, который я начал использовать docker compose. До недавнего времени все работало нормально. Я получаю сообщение об ошибке:

FATAL: password authentication failed for user "postgres"

Я подключился к базе данных с помощью spring - jdb c.

application.properties

## PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=postgres
spring.datasource.password=password

Dockerfile

FROM library/postgres
ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD password
ENV POSTGRES_DB mydb

docker -compose

version: '3'

services:
    database:
        build: ./postgres
        ports: 
            - "5432:5432"
        restart: unless-stopped

Я могу подключиться к базе данных с помощью pgAdmin, однако я не могу подключиться с помощью Spring-приложения или SQuirreL.

org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"(pgjdbc: autodetected server-encoding to be ISO-8859-1, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf)
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:525)
    at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:146)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:197)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:211)
    at org.postgresql.Driver.makeConnection(Driver.java:459)
    at org.postgresql.Driver.connect(Driver.java:261)
    at net.sourceforge.squirrel_sql.fw.sql.SQLDriverManager.getConnection(SQLDriverManager.java:147)
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.executeConnect(OpenConnectionCommand.java:148)
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.lambda$execute$0(OpenConnectionCommand.java:93)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:830)

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Ну, я вроде как это исправил. Я изменил имя пользователя и пароль только потому, что был в отчаянии. Это сработало, и теперь я еще больше запутался, чем раньше

0 голосов
/ 07 апреля 2020

Я могу подключиться к Postgresql База данных внутри Docker контейнера. Я полагаю, вы должны написать имя базы данных в docker -компонентном файле. Здесь мой дБ внутри docker -композит. Кроме того, я написал все postgres confs внутри файла compose вместо Dockerfile. Тогда я написал jdb c: postgresql: // db: 5432 / abdu вот так. Здесь вместо localhost я написал имя базы данных как в compose file. А также убедитесь, что вы правильно вводите имя пользователя и пароль для базы данных. Надеюсь, это поможет.

application.properties

spring.datasource.username=postgres
spring.datasource.password=password
spring.datasource.jdbc-url=jdbc:postgresql://db:5432/abdu

Dockerfile

FROM openjdk:8
ADD jarfolder/docker-time-zona.jar docker-time-zona.jar
EXPOSE 8086
ENTRYPOINT ["java", "-jar", "/docker-time-zona.jar"]
ENV TZ=America/Los_Angeles
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

docker-compose.yml

version: '3'

services:
  web:
    build: .
  db:
    restart: always
    container_name: docker-postgresql
    image: postgres:9.6
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=postgres
      - POSTGRES_DB=abdu
      - PGDATA=/var/lib/postgresql/data/pgdata
    ports:
      - "5432:5432"
...