postgresql authentication failed
2016-06-02 22:31
274 查看
PostgreSQL新手上路PG::ConnectionBad (FATAL: Peer authentication failed
2015-08-25 17:57 233人阅读 评论(0) 收藏 举报分类:
ruby(19)
版权声明:本文为博主原创文章,未经博主允许不得转载。
部署完的新机器报错
[ruby] view
plain copy
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,并指定为超级用户
[ruby] view
plain copy
sudo -u postgres createuser --superuser dbuser
(2)创建数据库uppers_staging,并指定其所有者为dbuser
[ruby] view
plain copy
sudo -u postgres createdb -O dbuser uppers_staging
(3)给dbuser设置登录密码,之前没设置的时候报这个错psql: fe_sendauth: no password supplied,设置之后就不报错了
[ruby] view
plain copy
# sudo -u postgres psql
psql (9.4.4)
Type "help" for help.
postgres=# \password dbuser
Enter new password:
Enter it again:
postgres=# \q
(4)登录查看下数据库
[ruby] view
plain copy
# 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 |
(5 rows)
dbuser的权限
[ruby] view
plain copy
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只有登录控制台的权限,没有操作数据库的权限
[ruby] view
plain copy
GRANT ALL PRIVILEGES ON DATABASE uppers_staging to dbuser;
这时候再看一下数据库的权限就变了
[ruby] view
plain copy
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
(5 rows)
其实报错的原因就是没有授权
常见的操作命令如下
[ruby] view
plain copy
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
相关文章推荐
- 数据控制语言(DCL)
- SqlServer中decimal(numeric )、float 和 real 数据类型的区别[转]
- SQL加锁语句
- 深入浅出MyBatis-Sqlsession
- ubuntu mysql授权
- 解决ubuntu下安装mysql使用service 无法启动问题
- sql-查看执行计划的方法
- dpkg: 另外一个进程已经为状态数据库加了锁
- 【SQL Sever】 存储过程的创建和执行
- PHP 开发学习[2] —— wamp memcache 的安装与扩展(Windows 64)
- TimesTen 数据库复制学习:3. 配置Classic Replication单表复制
- mysql加强
- MySQL数据库入门笔记
- MySQL数据库入门笔记
- oracle用户创建及权限设置
- JS数据交互:动态从数据库中获取数据填充Select
- oracle常用的数据字典
- oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系
- 数据库优化
- psql FATAL role vagrant does not exist