l0b*_*0b0 3 password java postgresql
以下命令运行良好,即不要求输入密码,不打印警告或错误,仅提供 DB 提示:
$ psql -U dbuser dbname
psql (8.4.10)
Type "help" for help.
dbname=#
Run Code Online (Sandbox Code Playgroud)
当尝试使用SchemaSpy(以同一主机用户身份运行)从此数据库生成 ERD 时,它不起作用:
$ java -jar ~/schemaSpy.jar -dp /usr/share/java/postgresql.jar -t pgsql \
-host localhost -db dbname -u dbuser -o ~/db
Using database properties:
[/[...]/schemaSpy.jar]/net/sourceforge/schemaspy/dbTypes/pgsql.properties
Failed to connect to database URL [jdbc:postgresql://localhost/dbname]
org.postgresql.util.PSQLException: The server requested password-based
authentication, but no password was provided.
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用空白密码 ( -p ''),它会打印:
org.postgresql.util.PSQLException: FATAL: password authentication failed for
user "dbuser"
Run Code Online (Sandbox Code Playgroud)
如何使用没有密码的数据库用户在 PostgreSQL 数据库上运行 SchemaSpy?
我尝试将pg_hba.conf设置更改为完全允许,但它仍然不起作用:
$ sudo grep ^local /etc/postgresql/*/main/pg_hba.conf
local all postgres ident
local all all trust
Run Code Online (Sandbox Code Playgroud)
发现有关类似问题的pgAdmin III的答案是:这两个方案(与psql)建立TCP / IP连接,而不是Unix套接字连接,因此在相关线路/etc/postgresql/*/main/pg_hba.conf是这一个,这将导致提示输入密码,即使密码为空.
host all all 127.0.0.1/32 md5
Run Code Online (Sandbox Code Playgroud)
要解决此问题,您必须信任来自 localhost 的连接,例如使用以下行:
host all all 127.0.0.1/32 trust
Run Code Online (Sandbox Code Playgroud)
并重新加载配置:
sudo service postgresql reload
Run Code Online (Sandbox Code Playgroud)
现在 SchemaSpy 和 pgAdmin 都应该能够连接。
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |