ในการกำหนดค่าของฉัน ( 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
-U
ตั้งค่าสถานะdropdb
และcreatedb