設定客戶端連線PostgreSQL不需要密碼
平常工作中,有時需要遠端連線 PostgreSQL 資料庫做些維護,例如遠端備份等;如果備份指令碼寫在遠端機器,備份的時候會彈出密碼輸入提示,那麼指令碼就不能後臺執行,這裡總結了幾種不彈出密碼輸入提示的方法。
--測試環境
目標庫IP: 192.168.1.25/5432 ; 資料庫: Mydb ;使用者名稱:postgres
客戶端IP:
192.168.1.26
--在 192.168.1.26 連線資料庫 Mydb , 彈出密碼提示
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres
Password for user postgres:
方法一:設定環境變數 PGPASSWORD
PGPASSWORD 是 PostgreSQL 系統環境變數,在客戶端設定這後,那麼在客戶端連線遠端資料庫時,將優先使用這個密碼。
--測試
postgres@linux-> export PGPASSWORD=mypassword
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres
psql (8.4.4)
Type "help" for
help.
Mydb=>
\q
備註:設定環境變數 PGPASSWORD ,連線資料庫不再彈出密碼輸入提示。 但是從安全性方面考慮,這種方法並不推薦。
方法二:設定 .pgpass 密碼檔案
透過在客戶端 /home/postgres 目錄下建立隱藏檔案 .pgpass ,從而避免連線資料庫時彈出密碼輸入提示。
--建立密碼檔案 .pgpass ( on 客戶端 )
vi /home/postgres/.pgpass
--格式
hostname:port:database:username:password
--範例
192.168.1.25:5432:Mydb:postgres:mypassword
--許可權
Chmod 600
.pgpass
--連線測試
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres
psql (8.4.4)
Type "help" for
help.
Mydb=>
備註:在/home/postgres 目錄建立了密碼檔案 .pgpass 檔案後,並正確配置連線資訊,那麼客戶端連線資料時會優先使用 .pgass檔案, 並使用匹配記錄的密碼,從而不跳出密碼輸入提示,這種方法比方法一更安全,所以推薦使用建立 .pgpass 檔案方式。
方法三:修改伺服器端 pg_hba.conf
修改認證檔案 $PGDATA/pg_hba.conf, 新增以下行, 並 reload使配置立即生效。
host Mydb postgres
192.168.0.0/24
trust
[postgres@linux]$ pg_ctl
reload -D $PGDATA / service postgresql reload
server signaled
--伺服器端 pg_hba.conf 的配置
# IPv4 local connections:
host
all
all
127.0.0.1/32
trust
host Mydb postgres
192.168.0.0/24
trust
host
all
all
0.0.0.0/0
md5
--客戶端再次連線測試
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres
psql (8.4.4)
Type "help" for help.
Mydb=> \q
備註:修改服務端 pg_hba.conf 並 reload 後,不再彈出密碼輸入提示。
引用官方說明文件:
使用者家目錄中的 .pgpass 或者 PGPASSFILE 引用的檔案是一個可包含口令的檔案。如果連線要求口令(並且沒有用其它方法宣告口令),那麼可以用它。在 Microsoft Windows 上,檔名字是 %APPDATA%\postgresql\pgpass.conf (這裡的 %APPDATA% 指使用者配置裡的 Application Data 子目錄)。
這個檔案應該有下面這樣的格式行:
hostname:port:database:username:password
頭四個欄位每個都可以是一個文字值,或者 *,它匹配所有的東西。第一個匹配當前連線引數的口令行的口令域將得以使用。(因此,如果你使用了萬用字元,那麼應該把最具體的記錄放在前面。)如果記錄包含 : 或者 \ ,應該用 \ 逃逸。一個 localhost 的主機名匹配來自本機的 host(TCP)和 local (Unix 域套接字)。
.pgpass 的許可權必須不允許任何全域性或者同組的使用者訪問;我們可以用命令 chmod 0600 ~/.pgpass 實現這個目的。如果許可權比這個松,這個檔案將被忽略。(不過目前在 Microsoft Windows 上沒有檢查這個檔案的許可權。)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1457501/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- impala客戶端連線客戶端
- 無密碼驗證:客戶端密碼客戶端
- vscode 遠端連線設定免密登入VSCode
- Redis客戶端連線數DevOpsRedis客戶端dev
- mysql、redis 客戶端連線池MySqlRedis客戶端
- LightDB/PostgreSQL 客戶端部署SQL客戶端
- VirtualBox虛擬機器遠端桌面連線設定詳解(包含登入密碼設定)虛擬機密碼
- 藍芽怎麼設定密碼不讓人連線 藍芽設定密碼的方法藍芽密碼
- Java 客戶端 Jedis和JedisPool 連線池Java客戶端
- PostgreSQL資料庫連線保持設定SQL資料庫
- Oracle 19c中連線RMAN客戶端的連線方法Oracle客戶端
- 如何遠端連線 桌面設定遠端桌面連線
- Docker遠端連線設定Docker
- 使用 WebSocket 客戶端連線 MQTT 伺服器Web客戶端MQQT伺服器
- 客戶端怎麼連線到伺服器?客戶端伺服器
- win10如何取消遠端桌面連線賬戶密碼登入_win10怎麼關閉遠端桌面賬戶密碼Win10密碼
- win10連線共享印表機需要密碼如何設定Win10密碼
- Presto學習筆記——Go客戶端連線PrestoREST筆記Go客戶端
- 使用 Java 客戶端透過 HTTPS 連線到 EasysearchJava客戶端HTTP
- HTTP客戶端連線,選擇HttpClient還是OkHttp?HTTP客戶端client
- 4.2.14 啟用客戶端快速連線故障轉移客戶端
- gRPC學習記錄(六)--客戶端連線池RPC客戶端
- ESP作為單連線中的TCP客戶端TCP客戶端
- 實用的PostgreSQL客戶端:Postico for MacSQL客戶端Mac
- php連結nsq客戶端PHP客戶端
- MongoDB使用者許可權管理,設定密碼並連線MongoDB密碼
- OceanBase學習之路7|透過 MySQL 客戶端連線 OceanBase 租戶MySql客戶端
- 0039-如何使用PythonImpyla客戶端連線Hive和ImpalaPython客戶端Hive
- 微服務整合Spring Cloud Alibaba Seata (二) 客戶端連線微服務SpringCloud客戶端
- 如何使用Redshift客戶端工具SQL Workbench來連線Redshift客戶端SQL
- ubisoft怎麼設定中文 育碧商城客戶端怎麼設定中文客戶端
- Ubuntu 設定遠端桌面(VNC 連線)UbuntuVNC
- 掌握遠端連線,暢享Mac SSH客戶端Termius的便利之道Mac客戶端
- netty服務端監聽客戶端連線加入和斷開事件Netty服務端客戶端事件
- TCP協議服務端和客戶端的連線與通訊TCP協議服務端客戶端
- win10設定遠端桌面連線的方法_win10如何設定遠端桌面連線Win10
- 第三方客戶端連線網易郵箱客戶端
- Qt TCP通訊客戶端斷開連線有哪些方法QTTCP客戶端
- 4.2.14.1 關於啟用客戶端快速連線故障轉移客戶端