Postgres:创建后无法连接到数据库?
Postgres: cannot connect to database after creating it?
我正在尝试在 Debian 7 上创建一个新的 Postgres 数据库和超级用户。
但是,我似乎无法在创建新数据库后连接到它。
这是我所做的:
$ sudo su - postgres
postgres@:~$ createdb prescribing
postgres@$ psql
postgres=# create user prescribing with password 'mypassword';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE prescribing to prescribing;
GRANT
postgres=# exit\q
could not save history to file "/var/lib/postgresql/.psql_history": No such file or directory
postgres@:~$ psql -d prescribing -U prescribing
psql: FATAL: Peer authentication failed for user "prescribing"
我做错了什么?
我不确定错误是否与缺少历史文件有关,或者是否是我不完全理解的 Unix 用户和数据库用户之间的某种交互。
我也试过 psql -U prescribing -d prescribing -W
,看看我是否可以让它向我询问密码,但没有帮助。
更新:这是pg_hba.conf
的内容:
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
使用'peer' 身份验证,unix 用户必须与数据库用户相匹配。您正在尝试以 'prescribing' 用户身份连接,但以 linux 'postgres' 用户身份登录。由于这种不匹配,它不起作用。
选择 'peer' 身份验证是因为您在本地连接(通过 unix 套接字),并且您的 pg_hba.conf 指定为此使用 'peer'。如果您将 'local' 条目更改为 md5,那么您将能够使用密码验证。或者,您可以通过 TCP/IP 地址 127.0.0.1 连接,例如:
psql -h 127.0.0.1 -U prescribing -d prescribing
我正在尝试在 Debian 7 上创建一个新的 Postgres 数据库和超级用户。
但是,我似乎无法在创建新数据库后连接到它。
这是我所做的:
$ sudo su - postgres
postgres@:~$ createdb prescribing
postgres@$ psql
postgres=# create user prescribing with password 'mypassword';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE prescribing to prescribing;
GRANT
postgres=# exit\q
could not save history to file "/var/lib/postgresql/.psql_history": No such file or directory
postgres@:~$ psql -d prescribing -U prescribing
psql: FATAL: Peer authentication failed for user "prescribing"
我做错了什么?
我不确定错误是否与缺少历史文件有关,或者是否是我不完全理解的 Unix 用户和数据库用户之间的某种交互。
我也试过 psql -U prescribing -d prescribing -W
,看看我是否可以让它向我询问密码,但没有帮助。
更新:这是pg_hba.conf
的内容:
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
使用'peer' 身份验证,unix 用户必须与数据库用户相匹配。您正在尝试以 'prescribing' 用户身份连接,但以 linux 'postgres' 用户身份登录。由于这种不匹配,它不起作用。
选择 'peer' 身份验证是因为您在本地连接(通过 unix 套接字),并且您的 pg_hba.conf 指定为此使用 'peer'。如果您将 'local' 条目更改为 md5,那么您将能够使用密码验证。或者,您可以通过 TCP/IP 地址 127.0.0.1 连接,例如:
psql -h 127.0.0.1 -U prescribing -d prescribing