非交互方式指定psql,pg_dump密码
在非交互式环境下指定psql
和pg_dump
的密码,可以通过设置PGPASSWORD
环境变量来实现。
对于psql
,可以这样做:
export PGPASSWORD="your_password"
psql -h hostname -U username -d dbname
对于pg_dump
,可以这样做:
export PGPASSWORD="your_password"
pg_dump -h hostname -U username -d dbname
请注意,这种方法将密码明文存储在环境变量中,因此有潜在的安全风险。为了提高安全性,可以使用pgpass.conf
文件来安全地存储密码,或者使用密钥文件。
使用pgpass.conf
文件的例子:
# 文件位置通常是`~/.pgpass`或者`$HOME/pgpass.conf`
echo "hostname:port:database:username:password" >> ~/.pgpass
chmod 600 ~/.pgpass
使用密钥文件的例子:
# 创建SSL密钥目录
mkdir ~/.postgresql
chmod 700 ~/.postgresql
# 生成SSL密钥
psql -h hostname -U username -d dbname --sslmode=disable -c "SELECT pg_backend_pid();" > ~/.postgresql/pid
psql -h hostname -U username -d dbname --sslmode=disable -c "SELECT pg_read_file('client_cert', '/path/to/client.crt')" > ~/.postgresql/client.crt
psql -h hostname -U username -d dbname --sslmode=disable -c "SELECT pg_read_file('client_key', '/path/to/client.key')" > ~/.postgresql/client.key
# 修改权限
chmod 600 ~/.postgresql/{pid,client.crt,client.key}
在使用密钥文件时,需要在连接字符串中指定sslrootcert
, sslcert
, 和 sslkey
参数。
评论已关闭