sudo -u postgres pg_dump -t _stats db30 | psql db8;
然而,我总是被要求输入密码,而我不知道这是什么密码。有没有一种方法可以不使用pg_dump来实现这个过程?有没有一种方法,使得当我运行psql
时不需要输入密码?
请注意,要进入postgres,我必须运行sudo -u postgres psql
而不是仅仅运行psql。
sudo -u postgres pg_dump -t _stats db30 | psql db8;
然而,我总是被要求输入密码,而我不知道这是什么密码。有没有一种方法可以不使用pg_dump来实现这个过程?有没有一种方法,使得当我运行psql
时不需要输入密码?
请注意,要进入postgres,我必须运行sudo -u postgres psql
而不是仅仅运行psql。
用户管理和权限是关于PostgreSQL服务器的一个复杂的话题,但您可能只在台式机上安装了一个服务器,并仅在本地主机上使用它,所以安全性并不是那么重要。
您需要执行以下3个步骤:
1) 编辑pg_hba.conf文件并重新启动服务器
2) 使用psql登录并为用户postgres
设置密码
3) 编辑(或创建)文件~/.pgpass
注意:您可以在pg_hba.conf中使用身份验证方法trust
,并避免步骤2和3,但这样做实在太宽容了,即使在本地主机上也不应该使用它。
pg_hba.conf文件
要了解pg_hba.conf文件,请阅读此处:http://www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html
基本上,如果您的服务器位于本地主机上且安全性不重要,则可以简单地允许所有用户使用 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,而无需输入密码。
psql -U postgres
,无需使用sudo。 - Tom-dbchown $rahul:$rahul ~/.pgpass
吗?因为它仍然在要求密码,我已经将 .pgpass 和我的 databasedumpscript.py 文件放在同一个路径下。 - Piyush S. Wanare
sudo
命令?难道不能只使用psql -U postgres
命令吗?如果需要提供密码,请参考:https://dev59.com/q2w15IYBdhLWcg3wxunL(但是这需要在 Linux 用户postgres
下执行,而不是你正在使用的用户)。 - user330315