如何调用psql以使它不提示输入密码?
这是我所拥有的:
psql -Umyuser < myscript.sql
但是,我找不到传递密码的参数,所以psql总是提示输入这个参数。
如何调用psql以使它不提示输入密码?
这是我所拥有的:
psql -Umyuser < myscript.sql
但是,我找不到传递密码的参数,所以psql总是提示输入这个参数。
当前回答
您可能希望阅读PostgreSQL身份验证方法的摘要。
为了回答你的问题,有几种方法为基于密码的身份验证提供密码:
Via the password prompt. Example: psql -h uta.biocommons.org -U foo Password for user foo: In a pgpass file. See libpq-pgpass. Format: <host>:<port>:<database>:<user>:<password> With the PGPASSWORD environment variable. See libpq-envars. Example: export PGPASSWORD=yourpass psql ... # Or in one line for this invocation only: PGPASSWORD=yourpass psql ... In the connection string The password and other options may be specified in the connection string/URI. See app-psql. Example: psql postgresql://username:password@dbmaster:5433/mydb?sslmode=require
其他回答
你必须创建一个密码文件:更多信息请参见http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html。
只需使用PGPASSWORD即可完成。我使用的是psql 9.5.10。对你来说,解决办法是
PGPASSWORD= psql -U myuser密码< myscript.sql密码
如果你像我一样在windows上遇到问题(我使用的是windows 7 64位),设置PGPASSWORD=[Password]不工作。
然后,正如Kavaklioglu在其中一条评论中所说,
export PGPASSWORD=[password]
您需要将其保存在文件的顶部,或者在任何使用之前,以便在调用之前设置它。
当然可以在windows上工作:)
使用PGPASSWORD环境变量的替代方法是根据文档使用conninfo字符串
指定连接参数的另一种方法是在conninfo中 字符串或URI,用来代替数据库名称。这 机制使您可以对连接进行非常广泛的控制。
$ psql "host=<server> port=5432 dbname=<db> user=<user> password=<password>"
postgres=>
PGPASSWORD=[your password] psql -Umyuser < myscript.sql