비대화형으로 '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 testdbWindows 에서는, 「set」를 사용할 필요가 있습니다.
set PGPASSWORD=passbash.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 |