如何调用psql以使它不提示输入密码?
这是我所拥有的:
psql -Umyuser < myscript.sql
但是,我找不到传递密码的参数,所以psql总是提示输入这个参数。
如何调用psql以使它不提示输入密码?
这是我所拥有的:
psql -Umyuser < myscript.sql
但是,我找不到传递密码的参数,所以psql总是提示输入这个参数。
当前回答
我发现,即使你定义了PGPASSWORD变量,psql显示密码提示,但你可以指定-w选项为psql省略密码提示。
其他回答
如果你像我一样在windows上遇到问题(我使用的是windows 7 64位),设置PGPASSWORD=[Password]不工作。
然后,正如Kavaklioglu在其中一条评论中所说,
export PGPASSWORD=[password]
您需要将其保存在文件的顶部,或者在任何使用之前,以便在调用之前设置它。
当然可以在windows上工作:)
PGPASSWORD=[your password] psql -Umyuser < myscript.sql
你可能会发现这很有用:Windows PSQL命令行:是否有一种方法允许无密码登录?
考虑到使用PGPASSWORD环境变量的安全问题,我认为最佳的整体解决方案如下:
用您想使用的密码编写自己的临时pgpass文件。 使用PGPASSFILE环境变量告诉psql使用该文件。 删除临时pgpass文件
这里有几点需要注意。步骤1是为了避免混淆用户的~/。Pgpass文件可能存在。您还必须确保该文件的权限为0600或更小。
一些人建议使用bash来实现如下的快捷方式:
PGPASSFILE=<(echo myserver:5432:mydb:jdoe:password) psql -h myserver -U jdoe -p 5432 mydb
它使用<()语法来避免将数据写入实际文件。但它不起作用,因为psql检查正在使用的文件,并抛出如下错误:
WARNING: password file "/dev/fd/63" is not a plain file
你必须创建一个密码文件:更多信息请参见http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html。