Ubuntu 서비스 - pq: 사용자 "root"에 대한 비밀번호 확인에 실패했습니다.

Ubuntu 서비스 - pq: 사용자 "root"에 대한 비밀번호 확인에 실패했습니다.

PostgreSQL을 사용하여 Ubuntu 서버에서 실행 중인 애플리케이션이 있습니다.

루트가 아닌 사용자로 프로젝트 디렉터리에서 애플리케이션의 실행 파일을 실행할 수 있습니다.

/etc/systemd/system/cineapi.service재부팅 시 자동으로 시작되도록 이 애플리케이션에 대한 서비스( )를 만들었습니다 . 파일 내용은 다음과 같습니다.

[Unit]
Description=cineapi

[Service]
Type=simple
Restart=on-failure
RestartSec=5s
WorkingDirectory=/home/saurabh/projects/cineapi
ExecStart=/home/saurabh/projects/cineapi/cineapi.o

[Install]
WantedBy=multi-user.target

시스템 데몬이 다시 로드되고 서비스가 시작되면 다음과 같습니다.

sudo systemctl daemon-reload
sudo service cineapi start

오류가 발생합니다.

pq: password authentication failed for user "root"

왜 이런 일이 발생하는지 이해하지 못합니다. 나는 응용프로그램 어디에서나 "루트" 사용자를 사용하지 않습니다. 그 .env파일은 다음과 같습니다

postgres://goapi:somepassword@MY_IPV4_ADDR:DB_PORT/cineapi

시작 시 가져옵니다. 또한 다음과 같이 변경했습니다.

  • /etc/postgresql/16/main/postgresql.conf

    password_encryption = scram-sha-256
    
  • /etc/postgresql/16/main/pg_hba.conf

    host    cineapi         goapi           MY_IPV4_ADDR            scram-sha-256
    
  • DB 사용자는 goapi슈퍼유저 권한을 가집니다.

    postgres=# \du
                               List of roles
    Role name |                         Attributes                         
    ----------+------------------------------------------------------------
    goapi     | Superuser, Create DB
    postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS
    

통나무

바이너리 실행 시 Postgres 로그:

2024-02-24 18:42:31.053 PST [16433] LOG:  checkpoint starting: time
2024-02-24 18:42:36.817 PST [16433] LOG:  checkpoint complete: wrote 60 buffers (0.4%); 0 WAL file(s) added, 0 removed, 0 recycled; write=5.737 s, sync=0.014 s, total=5.765 s; sync files=54, longest=0.003 s, average=0.001 s; distance=201 kB, estimate=201 kB; lsn=0/1A477E0, redo lsn=0/1A477A8
2024-02-24 18:43:39.173 PST [16573] goapi@cineapi LOG:  could not receive data from client: Connection reset by peer             #### ---------------- I stopped the executable ----------------- ####

애플리케이션의 시스템 서비스를 시작할 때 Postgres 로그

2024-02-24 18:37:31.024 PST [16432] LOG:  database system is ready to accept connections
2024-02-24 18:38:28.926 PST [16473] root@root FATAL:  role "root" does not exist

관련 정보