部署完的新機器報錯
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:列出當前數據庫和連接的信息。