Postgresql
psql 沒有提示我輸入密碼,然後拒絕訪問
我在 Debian Linux 上使用 Postgres 9.4。我用一個使用者創建了一個數據庫,
cindex
可以訪問該數據庫。然而,當我嘗試在命令行登錄時,我什至沒有提示輸入密碼:myuser@myuserserver:~ $ psql -Ucindex cindex psql: FATAL: Peer authentication failed for user "cindex"
我還需要做什麼才能啟用使用者?下面你可以看到我已經設置的權限:
postgres@myuserserver:~$ psql psql (9.4.13) Type "help" for help. postgres=# GRANT SELECT ON ALL TABLES IN SCHEMA cindex TO cindex; GRANT postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- cindex | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =T/postgres + | | | | | postgres=CTc/postgres+ | | | | | cindex=c/postgres postgres | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | template0 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows) postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- cindex | | {} postgres | Superuser, Create role, Create DB, Replication | {}
對等身份驗證
這意味著它使用的是 unix 套接字連接,並且 unix 套接字的連接設置為
peer
使用pg_hba.conf
. 它只是檢查 unix 使用者名是否與請求的 postgres 使用者名相同,而不關心密碼。如果您想要密碼驗證,請改用
md5
auth inpg_hba.conf
。請參閱手冊。
PostgreSQL 在 SQL 配置和配置文件之間拆分身份驗證的方式絕對令人困惑,因此您並不孤單。能夠為使用者設置密碼,但在某些情況下會忽略該密碼並在其他情況下使用該密碼,這需要一些時間來適應。一旦你理解了這個系統,它就很有意義,但它絕對不是可發現的和直覺的。