.pgpass กับ postgreSQL ไม่ทำงาน


13

ฉันได้ใส่ไฟล์ .pgpass ไว้ใน /folder/.pgpass และดูเหมือนว่านี้

*:*:*:postgres:password_for_postgres

ฉันมีสคริปต์ทุบตีที่ฉันสำรองฐานข้อมูลจาก postgreSQL:

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

อย่างไรก็ตามสคริปต์ยังคงให้รหัสผ่านแก่ฉัน PGPASSFILE มีค่าเท่าที่ควรเท่าที่ฉันเห็น คำแนะนำใด ๆ เกี่ยวกับปัญหาที่อาจเกิดขึ้น?

/ K

คำตอบ:


8

ไฟล์ pgpass ถูกตั้งค่าเป็นโหมด 0600 (เช่นอ่าน / เขียนโดยเจ้าของเท่านั้น) หรือไม่ ห้องสมุดลูกค้าจะไม่สนใจมันถ้ามันเป็นกลุ่มหรืออ่านได้ทั่วโลก


5

ในการกำหนดค่าของฉัน ( Ubuntu 10.04.3และPostgreSQL 8.4) ในที่สุดฉันก็สามารถใช้งานได้เมื่อชื่อผู้ใช้ที่ฉันเข้าสู่ระบบเหมือนกับชื่อที่ฉันพยายามรับรหัสผ่านจาก.pgpassไฟล์

เข้าสู่ระบบในฐานะที่deployerฉันพยายามใช้.pgpassไฟล์เพื่อเข้าถึงฐานข้อมูลที่เป็นเจ้าของโดยชื่อผู้ใช้appnameซึ่งไม่มีผู้ใช้ Unix เทียบเท่า ฉันไม่สามารถ.pgpassทำงานได้จนกว่าฉันจะเริ่มใช้deployerเป็นผู้ใช้ในการเข้าถึงฐานข้อมูลของฉัน ...

นี่คือ/home/deployer/.pgpassเนื้อหาไฟล์ของฉัน:

*:*:*:deployer:password

นี่เป็นส่วนหนึ่งของ/etc/postgresql/8.4/main/pg_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD                                                

# "local" is for Unix domain socket connections only                                                        
local   all         all                               md5                                                   
# IPv4 local connections:                                                                                   
host    all         all         127.0.0.1/32          md5                                                   
host    all         all         192.168.0.1/32        md5                                                   
# IPv6 local connections:                                                                                   
host    all         all         ::1/128               md5 

อย่างที่คุณเห็นการเชื่อมต่อทั้งหมดของฉันต้องใช้รหัสผ่าน ( md5)

ด้วยการกำหนดค่านี้สมมติว่าฉันมีฐานข้อมูลที่ฉันสร้างขึ้นด้วยคำสั่งนี้:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

ฉันสามารถทำการดำเนินการต่อไปนี้โดยไม่ต้องป้อนรหัสผ่าน:

deployer@ubuntu-server:~$ dropdb dbname

ทันทีที่ฉันเปลี่ยนชื่อของฉัน.pgpassเป็น.pgpass-noมันจะต้องใช้รหัสผ่าน

BTW อย่าลืมว่า.pgpassไฟล์ของคุณต้องได้0600รับการอนุญาต:

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass

2
คุณสามารถควบคุมผู้ใช้ pg เพื่อเชื่อมต่อโดยใช้การ-Uตั้งค่าสถานะdropdbและcreatedb
Kevin Horn

0

1) สร้างไฟล์. pass ที่มีเนื้อหา

โฮสต์: 5432: somedb: someuser: somepass

2) ตั้งค่าการอนุญาตโดยใช้คำสั่ง

sudo chmod 600 .pgpass

3) ตั้งค่าเจ้าของไฟล์เป็นผู้ใช้เดียวกันกับที่คุณเข้าสู่ระบบ:

sudo chown login_username: login_username .pgpass

4) ตั้งค่าตัวแปรสภาพแวดล้อม PGPASSFILE:

ส่งออก PGPASSFILE = '/ home / user / .pgpass'

ตรวจสอบโดยเชื่อมต่อกับฐานข้อมูล:

psql -h host -U someuser somedb

ฉันจะไม่ถามรหัสผ่านและลงชื่อเข้าใช้ใน postgresql

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.