psql 和 pg_dump 等工具连接PostgreSQL数据库时,通过-W参数,在终端以交互方式输入密码,很多时候,我们希望使用脚本调用psql或者pg_dump做一些自动化的操作,那么此时如何以非交互方式指定密码?
方法一,环境变量
设置环境变量PGPASSWORD,psql 和 pg_dump 等工具会自动读取环境变量PGPASSWORD的值作为连接密码。
示例:
export PGPASSWORD=123456
psql -h 127.0.0.1 -U admin -p 5432 db
方法二,.pgpass文件
使用配置文件~/.pgpass
~/.pgpass文件内容格式如下:
hostname:port:database:username:password
示例:
vim ~/.pgpass
192.168.56.200:5433:db:admin:123456
psql -h 192.168.56.200 -U admin -p 5433 db
当psql使用的参数与~/.pgass行内容匹配时,就会使用匹配到的那一行的密码作为psql的连接密码。
方法三,连接字符串
psql 的参数放在双引号里面,类似于连接字符串的用法,如下:
psql "host=127.0.0.1 port=5432 dbname=postgres user=admin password=123456"