目录:
  1. 问题来源
    1. 解决
      1. 补充问题
        1. 5月9号补充

          连接pgsql报认证错误解决方法

          阅读时间:全文 493 字,预估用时 3 分钟
          创作日期:2017-05-06
          文章标签:
          上篇文章:Django的执行流程
          下篇文章:csv转xlsx
           
          BEGIN

          问题来源

            pgsql安装后使用psql -U deploy -t test -W登录数据库失败.

            报错信息: psql: FATAL: Peer authentication failed for user "deploy"

            中文翻译: psql: 失败: 用户deploy的Peer认证失败

            其中表test已存在,且deploy有登录权限.

          解决

           google搜索报错信息,在stackoverflow中有人建议查看网页(https://help.ubuntu.com/stable/serverguide/postgresql.html 🔗).

          根据页面信息解决方法如下:

          1. sudo vim /etc/postgresql/9.5/main/pg_hba.conf
          2. 可以看到文件的如下信息(为了方便阅读,做成表格形式,其中第一列为自添加):
          TYPEDATABASEUSERADDRESSMETHOD
          1localallpostgrespeer
          2localallallpeer
          3hostallall127.0.0.1/32md5
          4hostallall::1/128md5
          1. 系统管理员的认证配置,ADDRESS默认本地.
          2. 普通用户的认证配置,ADDRESS默认本地.
          3. ipv4方式登录的认证配置.
          4. ipv6方式登录的认证配置.

          其中字段:

          1. TYPE: 登录方式,local为本地登录,host为远程主机(带host及端口)登录.
          2. DATABASE: 应用的数据库,all表示应用所有数据库.
          3. USER: 应用的用户,all表示应用所有用户.
          4. ADDRESS: 用户指定主机名及端口.
          5. METHOD: 登录方式,peer指要在当前用户下才能登录,即要先su username再登录,md5表示请密码方式登录.

            读到这里想必执行psql -U deploy -t test -W报错的原因找到了,只要修改1和2行中的peer为md5就可以解决.

            修改后保存退出,并重启pgsql服务器: sudo /etc/init.d/postgres restart或用systemctl管理的可以执行sudo systemctl restart postgresql.service.

          补充问题

            发现远程登录的方式明明是md5的密码方式还是会报错.这是由于pgsql的配置中只允许本地登录,解决方法如下:

          1. sudo vim /etc/postgresql/9.5/main/postgresql.conf
          2. listen_addresses = 'localhost'更改成listen_addresses = '*',问题解决.

          5月9号补充

          md5密码方式登录的前提是在数据库中设置用户的数据库权限密码,否则会报密码错误权限。

          postgres用户登录后执行:alter role deploy with password 'deploy123';, 其中deploy为用户名。

          FINISH
          上篇文章:Django的执行流程
          下篇文章:csv转xlsx

          随机文章
          人生倒计时
          default