2014-02-27 33 views
0

用戶認證工作究竟是如何做到用戶/角色在PostgreSQL工作進行訪問控制和他們如何從用戶提供的操作系統的訪問控制不同。如何在PostgreSQL

當安裝PostgreSQL我可以看到,在/ etc/passwd中看出創建用戶postgres的。

我可以通過sudo的使用psql的和看到的Postgres的用戶/角色。

$ sudo -u postgres psql 
postgres=# \du 
          List of roles 
Role name |     Attributes     | Member of 
-----------+------------------------------------------------+----------- 
postgres | Superuser, Create role, Create DB, Replication | {} 

這表明名爲postgres的角色存在,但試圖使用它而不是使用sudo失敗。

$ psql -U postgres 
psql: FATAL: Peer authentication failed for user "postgres" 

爲什麼,什麼是postgres用戶之間的/ etc/passwd和由\杜

+0

開始[這裏](http://www.postgresql.org/docs/current/static/client- authentication.html)。 –

回答

0

的「Postgres的」 OS用戶和「Postgres的之間的連接打印的Postgres的作用的連接「的作用是:

  1. 它們拼寫相同
  2. 如果不指定-U選項給psql,它默認使用的操作系統用戶名作爲角色名,這可能是‘Postgres的’如果那是你的操作系統用戶。
  3. 如果指定pg_hba.conf中「對等」的授權,你似乎都做了,那麼你必須是OS用戶身份登錄該角色。如果你不想要這個規則,把它改成別的東西,比如信任,md5等。