PostgreSQL新手上路PG::ConnectionBad (FATAL: Peer authentication failed


 

部署完的新機器報錯

App 12595 stderr: PG::ConnectionBad (FATAL:  Peer authentication failed for user "dbuser"
App 12595 stderr: ):

上網查了一下,很多帖子上都在說要修改/etc/postgresql/9.4/main/pg_hba.conf這個文件,然而並沒有什么用

回憶一下整個數據庫搭建過程

(1)創建數據庫用戶dbuser,並指定其為超級用戶

sudo -u postgres createuser --superuser dbuser

(2)創建數據庫uppers_staging, 並指定所有者為dbuser

sudo -u postgres createdb -O dbuser uppers_staging

 

(3)給dbuser設置登錄密碼(之前沒設置密碼的時候登錄報這個錯psql: fe_sendauth: no password supplied,設置了就ok了)

root@i-1lb6pxls:/home/ubuntu/campo/shared# sudo -u postgres psql
psql (9.4.4)
Type "help" for help.

postgres=# \password dbuser
Enter new password: 
Enter it again: 
postgres=# \q

(4)登錄查看下數據庫

root@i-1lb6pxls:/home/ubuntu/campo/current# psql -U dbuser -d uppers_staging -h 127.0.0.1 
Password for user dbuser: 
psql (9.4.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

uppers_staging=> \l
                                      List of databases
        Name        |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
--------------------+----------+----------+-------------+-------------+-----------------------
 postgres           | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0          | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                    |          |          |             |             | postgres=CTc/postgres
 template1          | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                    |          |          |             |             | postgres=CTc/postgres
 uppers_development | root     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 uppers_staging     | dbuser   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

dbuser的權限

uppers_staging=> \du
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 dbuser    |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 root      | Superuser, Create role, Create DB              | {}

接下來需要講數據庫uppers_staging 的所有權限都賦給dbuser,否則dbuser只能登錄控制台,沒有操作數據庫的權限

 GRANT ALL PRIVILEGES ON DATABASE uppers_staging to dbuser;

 這時候再來看一下數據庫列表

uppers_staging=> \l
                                      List of databases
        Name        |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
--------------------+----------+----------+-------------+-------------+-----------------------
 postgres           | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0          | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                    |          |          |             |             | postgres=CTc/postgres
 template1          | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                    |          |          |             |             | postgres=CTc/postgres
 uppers_development | root     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 uppers_staging     | dbuser   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/dbuser           +
                    |          |          |             |             | dbuser=CTc/dbuser

報錯的原因其實就是沒有授權 @_@

常見的數據庫操作命令如下

\h:查看SQL命令的解釋,比如\h select。
\?:查看psql命令列表。
\l:列出所有數據庫。
\c [database_name]:連接其他數據庫。
\d:列出當前數據庫的所有表格。
\d [table_name]:列出某一張表格的結構。
\du:列出所有用戶。
\e:打開文本編輯器。
\conninfo:列出當前數據庫和連接的信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM