Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL:为什么我可以使用设置的密码连接到用户,而不必提供密码?_Sql_Database_Postgresql_Passwords - Fatal编程技术网

PostgreSQL:为什么我可以使用设置的密码连接到用户,而不必提供密码?

PostgreSQL:为什么我可以使用设置的密码连接到用户,而不必提供密码?,sql,database,postgresql,passwords,Sql,Database,Postgresql,Passwords,创建新用户后,使用:创建用户约翰密码“测试”; CREATE USER john PASSWORD 'test'; CREATE DATABASE johndb OWNER john; 创建数据库johndb所有者john;我可以使用:psql-U john johndb连接到PostgreSQL server。问题是psql从不向我询问密码。我真的需要知道出了什么问题,原因很明显。您的pg_hba.conf文件可能已将本地连接设置为“信任”。默认设置包含如下部分: psql -U john j

创建新用户后,使用:创建用户约翰密码“测试”; CREATE USER john PASSWORD 'test'; CREATE DATABASE johndb OWNER john;
创建数据库johndb所有者john;我可以使用:psql-U john johndb连接到PostgreSQL server。问题是
psql
从不向我询问密码。我真的需要知道出了什么问题,原因很明显。

您的
pg_hba.conf
文件可能已将本地连接设置为“信任”。默认设置包含如下部分:

psql -U john johndb # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust #“本地”仅用于Unix域套接字连接 本地所有信任 #IPv4本地连接: 托管所有127.0.0.1/32信任 #IPv6本地连接: 主机所有::1/128信任 这意味着,对于来自本地计算机的所有连接,无论客户机说什么,都要信任。如果客户机说“我是用户john”,那么服务器将允许这样做


PostgreSQL文档有一个完整的问题。

我有一个类似的问题,但我的问题是没有设置为信任的,使用psql它需要密码,但如果使用psycog2 API,你可以不用密码就通过,为什么?@radtek:我不确定,但是,也许psycog2使用的是另一种连接方法,它会自动验证当前用户到postgresql server的身份。我忘了我的主目录中有.pgpass文件。如果未指定密码,psycopg2将使用.pgpass中存储的信息,psql也是如此