我该如何调用psql,使其不提示输入密码?
这是我的代码:
psql -Umyuser < myscript.sql
然而,我找不到传递密码的参数,所以psql总是提示输入密码。
我该如何调用psql,使其不提示输入密码?
这是我的代码:
psql -Umyuser < myscript.sql
然而,我找不到传递密码的参数,所以psql总是提示输入密码。
回答你的问题,有几种方法可以提供用于基于密码的身份验证的密码:
通过密码提示输入密码。例如:
psql -h uta.biocommons.org -U foo
Password for user foo:
在pgpass文件中。请参见libpq-pgpass。格式:
<host>:<port>:<database>:<user>:<password>
使用PGPASSWORD
环境变量。参见libpq-envars。示例:
export PGPASSWORD=yourpass
psql ...
# Or in one line for this invocation only:
PGPASSWORD=yourpass psql ...
在连接字符串中,密码和其他选项可以在连接字符串/URI中指定。请参见app-psql。例如:
psql postgresql://username:password@dbmaster:5433/mydb?sslmode=require
psql (PostgreSQL) 13.2
。 - jbrownPGPASSWORD=[your password] psql -Umyuser < myscript.sql
export PGPASSWORD="[your password]"
export PGPASSWORD=[password]
命令有效。 - Can Kavaklıoğlu#!/bin/sh
set PGPASSWORD = postgres
psql -h 192.168.3.200 -U postgres incx_um << EOF
DELETE FROM usrmgt.user_one_time_codes WHERE time < NOW() - INTERVAL '30 minute'
EOF
- Govind GuptaPGPASSWORD=password
。 - Ariejanvim ~/.pgpass
或类似命令创建文件。按以下格式输入信息:hostname:port:database:username:password
。不要在字段值周围添加字符串引号。您还可以使用*作为端口/数据库字段的通配符。
2. 您必须chmod 0600 ~/.pgpass
以防止psql忽略该文件。
3. 在bash配置文件中创建别名,以便为您运行psql命令。例如:alias postygresy='psql --host hostname database_name -U username'
。值应与您输入到~/.pgpass文件中的值匹配。
4. 使用. ~/.bashrc
或类似命令加载bash配置文件。
5. 从命令行键入别名。chmod 600
命令,否则 psql
将会在不发出任何警告的情况下忽略它(根据文档)。 - RichVelPGPASSWORD
。 - david.perezpsql.exe“postgresql://username:password@address:5432/database”
。 - Ivan Chau根据文档,使用conninfo
字符串是使用PGPASSWORD
环境变量的另一种选择。
另一种指定连接参数的方法是在
conninfo
字符串或URI中,它代替数据库名称使用。这种机制使您对连接有非常广泛的控制。
$ psql "host=<server> port=5432 dbname=<db> user=<user> password=<password>"
postgres=>
如果您像我一样在Windows上遇到问题(我正在使用64位的Windows 7),并且set PGPASSWORD=[Password]
没有起作用。
那么,正如Kavaklioglu在其中一条评论中所说的那样,
export PGPASSWORD=[password]
你需要将这个保存在文件的顶部,或者在任何使用之前设置,以便在调用之前进行设置。
当然可以在Windows上工作:)
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