PostgreSQL新手上路PG::ConnectionBad (FATAL: Peer authenticat
发布时间:2020-12-13 17:15:41 所属栏目:百科 来源:网络整理
导读:部署完的新机器报错 App 12595 stderr: PG::ConnectionBad (FATAL: Peer authentication failed for user "dbuser"App 12595 stderr: ): 上网查了一下,很多帖子上都说要修改/etc/postgresql/9.4/main/pg_hba.conf 这个文件配置,然而并没有什么用 回忆一下
部署完的新机器报错 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,设置之后就不报错了 # sudo -u postgres psql psql (9.4.4) Type "help" for help. postgres=# password dbuser Enter new password: Enter it again: postgres=# q (4)登录查看下数据库 # 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的权限 uppers_staging=> du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- dbuser | | {} postgres | Superuser,Create role,Create DB,Replication | {} root | Superuser,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 (5 rows) 其实报错的原因就是没有授权
常见的操作命令如下 h:查看SQL命令的解释,比如h select。 ?:查看psql命令列表。 l:列出所有数据库。 c [database_name]:连接其他数据库。 d:列出当前数据库的所有表格。 d [table_name]:列出某一张表格的结构。 du:列出所有用户。 e:打开文本编辑器。 conninfo:列出当前数据库和连接的信息。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |