簡體   English   中英

在不使用密碼且不使用sudo -u postgres的情況下運行psql和pg_dump

[英]Run psql and pg_dump without password and without using sudo -u postgres

我正在嘗試將一個表從一個數據庫復制到另一個數據庫:

sudo -u postgres pg_dump -t _stats db30 | psql db8;

但是,總是會要求我輸入密碼,我不知道它是什么。 沒有pg_dump,有沒有辦法做到這一點? 有沒有辦法讓我在運行psql時不要求輸入密碼?

注意,要進入postgres,我必須運行sudo -u postgres psql而不是psql

Postgres服務器上的用戶管理和權限是一個復雜的主題,但是您可能只有一台服務器安裝在桌面上,並且只能在localhost上使用,因此安全性並不是那么重要。

您必須執行3個步驟:

1)編輯pg_hba.conf文件並重新啟動服務器

2)使用psql登錄並為用戶postgres設置密碼

3)編輯(或創建)文件〜/ .pgpass

注意:您可以使用的身份驗證方法trust pg_hba.conf中,避免步驟2和3,但是這真的是寬容了,你不應該使用它,即使在本地主機上。

pg_hba.conf文件

要了解pg_hba.conf文件,請在此處閱讀: http : //www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html

基本上,如果您的服務器位於localhost上並且安全性無關緊要,則可以簡單地允許所有用戶使用md5身份驗證方法進行連接。 如果您不知道此文件在哪里,請使用以下命令:

locate pg_hba.conf

可能在/etc/postgresql/9.3/main/pg_hba.conf或類似文件中。

編輯文件並更改已經存在的行,以便(在文件末尾):

local   all             all                                     md5
host    all             all             127.0.0.1/32            md5

現在使用以下命令重新啟動服務器

sudo service postgresql restart

為用戶postgres設置密碼

首次登錄psql:

sudo -u postgres psql

現在,在psql中,更改密碼:

ALTER USER postgres PASSWORD 'your-password';

pgpass文件

現在,您可以使用psql -U postgres (不使用sudo -u postgres )登錄psql,但必須輸入密碼。 為了避免每次都輸入密碼,您可以設置pgpass文件。 如果尚不存在,則必須在主目錄中創建一個名為.pgpass的文件。 該文件必須歸您的用戶所有,並且只能由您的用戶讀取:

chown $USER:$USER ~/.pgpass
chmod 600 ~/.pgpass

現在在文件中寫以下行:

localhost:5432:*:postgres:your-password
127.0.0.1:5432:*:postgres:your-password

或者,您可以使用環境變量PGPASSWORDhttp : //www.postgresql.org/docs/9.4/static/libpq-envars.html

准備。 現在,您可以使用psql -U postgres登錄到postgres,而無需輸入密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM