비대화형으로 'psql' 비밀번호를 지정하려면 어떻게 해야 합니까?
셸 스크립트를 사용하여 데이터베이스 작성 프로세스를 자동화하려고 합니다.또한 psql에 패스워드를 전달함으로써 장애가 되고 있습니다.셸 스크립트의 코드를 다음에 나타냅니다.
psql -U $DB_USER -h localhost -c"$DB_RECREATE_SQL"
패스워드는 어떻게 전달합니까?psql
어떻게 해야 할까요?
psql을 호출하기 전에 스크립트 내에서 PGPASSWORD 환경변수를 설정합니다.
PGPASSWORD=pass1234 psql -U MyUsername myDatabaseName
자세한 것은, http://www.postgresql.org/docs/current/static/libpq-envars.html 를 참조해 주세요.
편집
Postgres 9.2 이후 사용자 이름과 비밀번호를 포함할 수 있는 연결 문자열 또는 URI를 지정하는 옵션도 있습니다.구문:
$ psql postgresql://[user[:password]@][host][:port][,...][/dbname][?param1=value1&...]
예를 들어 실행 중인 프로세스의 명령줄을 볼 때 암호가 일반 텍스트로 표시되므로 이를 사용하면 보안 위험이 있습니다.ps
(Linux), 프로세스탐색기(Windows) 또는 유사한 도구(다른 사용자가 사용).
패스워드를 정기적으로 입력하는 것을 피하기 위해 ~/.pgpass 파일이 있으면 편리합니다.자세한 내용은 섹션 30.13을 참조하십시오.
...
이 파일에는 다음 형식의 행이 포함되어 있어야 합니다.
hostname:port:database:username:password
현재 연결 매개 변수와 일치하는 첫 번째 줄의 암호 필드가 사용됩니다.
한 줄:
export PGPASSWORD='password'; psql -h 'server name' -U 'user name' -d 'base name' -c 'command'
다음과 같은 sql 명령어를 사용하여
"select * from schema.table"
가독성 향상:
export PGPASSWORD='password' psql -h 'server name' -U 'user name' -d 'base name' \ -c 'command' (eg. "select * from schema.table")
저는 psql에 URL을 전달하는 것을 선호합니다.
psql "postgresql://$DB_USER:$DB_PWD@$DB_SERVER/$DB_NAME"
이렇게 하면 환경변수에 원하는 이름을 붙일 수 있고 불필요한 파일을 만들지 않아도 됩니다.
이 경우libpq
매뉴얼은 이쪽에서 찾을 수 있습니다.
Windows 의 경우:
PGPASSWORD에 값 할당:
C:\>set PGPASSWORD=pass
실행 명령:
C:\>psql -d database -U user
준비가 되어 있습니다!
아니면 한 줄에
set PGPASSWORD=pass&& psql -d database -U user
& &! 앞에 공간이 부족하다는 점에 유의하십시오.
이 조작은, 다음의 커맨드를 작성하면 실행할 수 있습니다..pgpass
파일을 (Linux) 사용자의 홈 디렉토리에 저장합니다. .pgpass
파일 형식:
<databaseip>:<port>:<databasename>:<dbusername>:<password>
와일드카드도 사용할 수 있습니다.*
디테일을 대신
달리고 싶다고 말해라tmp.sql
패스워드를 입력하도록 지시하지 않습니다.
다음 코드를 사용하여 *.sh 파일로 할 수 있습니다.
echo "192.168.1.1:*:*:postgres:postgrespwd" > $HOME/.pgpass
echo "` chmod 0600 $HOME/.pgpass `"
echo " ` psql -h 192.168.1.1 -p 5432 -U postgres postgres -f tmp.sql `
를 사용하는 대체 수단PGPASSWORD
환경변수는 다음 명령어를 사용하는 것입니다.conninfo
설명서에 따라 스트링을 지정합니다.
접속 파라미터를 지정하는 대체 방법은 conninfo 문자열 또는 데이터베이스 이름 대신 사용되는 URI입니다.이 메커니즘에 의해 접속을 매우 폭넓게 제어할 수 있습니다.
$ psql "host=<server> port=5432 dbname=<db> user=<user> password=<password>"
postgres=>
한 답변에 대부분의 옵션을 추가해도 늦지 않은 경우:
몇 가지 옵션이 있습니다.
- pgpass 파일에 설정합니다.링크
환경변수를 설정하고 거기에서 가져옵니다.
export PGPASSWORD='password'
psql을 실행하여 로그인하거나 명령어를 실행합니다.
psql -h clustername -U username -d testdb
Windows 에서는, 「set」를 사용할 필요가 있습니다.
set PGPASSWORD=pass
bash.psql bash에 합니다.URL 및 env 변수를 통해 전달:
psql "postgresql://$USER_NAME:$PASSWORD@$HOST_NAME/$DB_NAME"
좀 더 선명하게 하기 위해서.
는 '비밀번호'는 '비밀번호 할당'입니다.PGPASSWORD
★★★★★★ 。
따라서 다음 대신 암호를 입력해야 합니다.
psql --host=aurora-postgres.cluster-fgshdjdf.eu-west-1.rds.amazonaws.com --port=5432 --user=my_master_user --password --dbname=postgres
대신 쓰겠습니다.--password
에 깃발을 올리다PGPASSWORD=QghyumjB3ZtCQkdf
될 을 사용하다
PGPASSWORD=QghyumjB3ZtCQkdf psql --host=aurora-postgres.cluster-fgshdjdf.eu-west-1.rds.amazonaws.com --port=5432 --user=my_master_user --dbname=postgres
이렇게 하면 암호를 입력할 필요가 없습니다.
pg_env.sh의 내용을 .bashrc에 추가했습니다.
cat /opt/PostgreSQL/10/pg_env.sh
#!/bin/sh
# The script sets environment variables helpful for PostgreSQL
export PATH=/opt/PostgreSQL/10/bin:$PATH
export PGDATA=/opt/PostgreSQL/10/data
export PGDATABASE=postgres
export PGUSER=postgres
export PGPORT=5433
export PGLOCALEDIR=/opt/PostgreSQL/10/share/locale
export MANPATH=$MANPATH:/opt/PostgreSQL/10/share/man
(사용자 4653174의 제안에 따라)를 추가합니다.
export PGPASSWORD='password'
psql postgresql://myawsumuser:myPassword@127.0.0.1:5432/myawsumdb
언급URL : https://stackoverflow.com/questions/6405127/how-do-i-specify-a-password-to-psql-non-interactively
'programing' 카테고리의 다른 글
Xcode 4에서 NSZombieEnabled를 설정하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
---|---|
Excel 문자열로 날짜 연결 (0) | 2023.04.16 |
WPF에서 바인드된 컨트롤에 대한 강제 유효성 검사 (0) | 2023.04.16 |
마이크로소프트(MS.Office.Interop.Excel.ApplicationClass에 정의된 생성자가 없습니다. (0) | 2023.04.16 |
오늘 날짜에서 30일 전 날짜를 얻는 방법 (0) | 2023.04.16 |