psql: fe_sendauth: ไม่ได้ระบุรหัสผ่าน


19

ฉันมีฐานข้อมูล PostgreSQL ขึ้นและทำงาน ตอนนี้ฉันต้องการดำเนินการบางอย่างในฐานข้อมูลของฉันโดยอัตโนมัติ แต่ฉันมีปัญหากับรหัสผ่าน

ฉันใช้สคริปต์ทุบตีต่อไปนี้:

#!/bin/bash
export PGPASSWORD="postgres"
sudo -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT id FROM radusers WHERE id=1"

เมื่อฉันเรียกใช้สคริปต์ทุบตีฉันได้รับข้อผิดพลาดต่อไปนี้:

psql: fe_sendauth: no password supplied

ฉันได้ลองกำหนดค่าไฟล์ .pgpass ในโฮมไดเร็กตอรี่ของฉันแล้ว แต่ไม่มีประโยชน์:

*:*:*:postgres:postgres

ฉันได้รันคำสั่งต่อไปนี้:

sudo chmod 0600 .pgpass

อย่างไรก็ตามดูเหมือนว่าจะไม่มีวิธีการใดที่ใช้งานได้ ไม่มีใครมีความคิดใด ๆ ฉันลืมที่จะทำอะไรบางอย่าง?


1
ลองsudo su -c psql postgres psql ...แทน
Flup

.pgpassอยู่ในของคุณไดเรกทอรีบ้าน? ไม่ได้อยู่ในpostgresผู้ใช้ใช่หรือไม่
Milen A. Radev

ใช่มันอยู่ในไดเรกทอรีบ้านของฉันเช่น / home / server2 /
alibaba

คำตอบ:


15

sudoไม่เก็บตัวแปรสภาพแวดล้อมส่วนใหญ่ หากคุณต้องการระบุตัวแปรสภาพแวดล้อมให้กับคำสั่งที่ทำงานภายใต้sudoให้ทำเช่นนั้นsudo:

sudo PGPASSWORD="postgres" -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT id FROM radusers WHERE id=1"

การsudoอนุญาตนี้จะขึ้นอยู่กับนโยบายความปลอดภัยของเว็บไซต์ของคุณหรือไม่

ฉันไม่แนะนำวิธีการนี้เนื่องจากมันเปิดเผยรหัสผ่านในประวัติบรรทัดคำสั่งและในรายการกระบวนการ มันมากดีกว่าการใช้.pgpassแฟ้มหรือควรตั้งpg_hba.confค่าสำหรับการpeerรับรองความถูกต้องของการเชื่อมต่อจากผู้ใช้localpostgres

คุณสามารถใช้.pgpassไฟล์ แต่มันจะต้องเป็น.pgpassผู้ใช้ที่คุณsudo'ไอเอ็นจีที่จะไม่ใช้ที่คุณsudoไอเอ็นจีจาก ; มันจะต้องเป็น~postgres/.pgpassในกรณีนี้ คิดเกี่ยวกับมันpsqlทำงานตามที่postgresไม่ได้รู้ว่าคุณวิ่งผ่านsudoจากบัญชีของคุณก็ไม่ได้รู้ว่าสิ่งที่บัญชีผู้ใช้ของคุณและถึงแม้ว่ามันจะไม่ได้มันไม่ได้มีสิทธิ์ในการอ่านเป็นผู้ใช้ที่จะpostgres~youruser/.pgpass

นอกจากนี้เป็นเช่นเดียวกับ-w --no-passwordไม่มีจุดที่ระบุทั้งสองอย่าง


2
คุณสามารถตั้งค่า sudo เพื่อให้คุณใช้-Eตัวเลือกที่จะรักษาสภาพแวดล้อมของคุณ (รวมถึงPGPASSWORD) สิ่งนี้จะป้องกันไม่ให้มันปรากฏในรายการกระบวนการ
fukawi2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.