如何调用psql以使它不提示输入密码?

这是我所拥有的:

psql -Umyuser < myscript.sql

但是,我找不到传递密码的参数,所以psql总是提示输入这个参数。


当前回答

你可能会发现这很有用:Windows PSQL命令行:是否有一种方法允许无密码登录?

其他回答

8年后……

在我的mac上,我必须在文件中添加一行 ~ /。pgpass:

<IP>:<PORT>:<dbname>:<user>:<password>

还看到: https://www.postgresql.org/docs/current/libpq-pgpass.html https://wiki.postgresql.org/wiki/Pgpass

这也适用于其他postgresql cliis,例如你可以在非交互模式下运行pgbench。

export PGPASSWORD=yourpassword
/usr/pgsql-9.5/bin/pgbench -h $REMOTE_PG_HOST -p 5432 -U postgres -c 12 -j 4 -t 10000 example > pgbench.out 2>&1 &

您可能希望阅读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

使用PGPASSWORD环境变量的替代方法是根据文档使用conninfo字符串

指定连接参数的另一种方法是在conninfo中 字符串或URI,用来代替数据库名称。这 机制使您可以对连接进行非常广泛的控制。

$ psql "host=<server> port=5432 dbname=<db> user=<user> password=<password>"

postgres=>

你可以在脚本的开头添加这个命令行:

export PGPASSWORD="[your password]"