postgres 명령을 실행하는 데 필요한 비대화형 스크립트를 작성 중입니다. 이 스크립트는 root
권한이 있는 사용자만 실행할 수 sudo
있으며 postgres 명령은 postgres
postgresql에서 사용자로 실행해야 합니다. 문제는 postgresql이 항상(내가 아는 한) 대화형으로 비밀번호를 묻는 메시지를 표시하거나(예 pqsl -U postgres -W
:) 비밀번호를 전혀 허용하지 않는다는 것입니다(예 psql -U postgres -w
:). mysql에서 허용하는 방식과 유사하게 명령줄에서 비밀번호를 전달하고 싶습니다 mysql -u user -p password
. 포스트그레스로 이 작업을 어떻게 수행할 수 있나요?
답변1
답변2
동일한 작업을 수행하는 방법에는 두 가지가 있습니다.
방법 1:
.pgpass
사용자(스크립트를 실행하는 사용자)의 홈 디렉터리에 파일을 추가합니다.
$ cat /home/user/.pgpass
hostname:port:database:user:password
$ chmod 600 /home/user/.pgpass
위 항목을 추가한 후에는 사용하는 스크립트에 비밀번호를 추가할 필요가 없습니다. 바로 연결됩니다.
방법 2:
쉘 스크립트에 다음 내용을 추가하십시오. 그러나 이로 인해 비밀번호가 노출되고 저장소에 커밋하면 문제가 됩니다.
export PGPASSWORD=password
답변3
psql을 사용자 postgres로 실행할 수 있는 경우 가장 유용한 해결책은 pg_hba.conf를 수정하여 localhost/socket을 통해 연결하는 Unix 사용자 postgres가 비밀번호나 외부 파일 없이 인증할 수 있도록 하는 것입니다. 파일 삽입 상단에 다음을 삽입합니다.
local all postgres peer
이 시점에서는 TBMI가 기본값입니다. 어쩌면 누군가가 이 선을 제거했을 때 자신이 더 똑똑하거나 더 안전하다고 생각했을 수도 있습니다. 모니터링 서비스에 다음과 같은 것을 사용할 수도 있습니다.
local zabbix zabbix peer
"zabbix"라는 사용자 이름과 데이터베이스를 만듭니다.