• 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:列出当前数据库和连接的信息。
  • 相关阅读:
    Vue 项目目录结构分析
    Vue 项目环境搭建
    Vue 组件
    Vue 指令
    Vue 实例成员
    Django 静态文件
    MySQL 索引详解
    Django 请求生命周期
    18. 4Sum (JAVA)
    16. 3Sum Closest (JAVA)
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/4758148.html
Copyright © 2020-2023  润新知