[英]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
或者,您可以使用环境变量PGPASSWORD
: http : //www.postgresql.org/docs/9.4/static/libpq-envars.html
准备。 现在,您可以使用psql -U postgres
登录到postgres,而无需输入密码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.