部署完的新机器报错
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:列出当前数据库和连接的信息。