我忘记了在 PostgreSQL 安装期间输入的密码。

8 浏览
0 Comments

我忘记了在 PostgreSQL 安装期间输入的密码。

我不记得或在安装过程中输错了PostgreSQL默认用户的密码。我好像不能运行它,我得到了以下错误:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql

是否有重置密码的方法,或者如何创建一个具有超级用户权限的新用户?

我是PostgreSQL的新手,第一次安装它。我正在尝试将其与Ruby on Rails一起使用,我正在运行Mac OS X v10.7(Lion)。

admin 更改状态以发布 2023年5月23日
0
0 Comments

在命令行连接到PostgreSQL时,不要忘记添加-h localhost作为命令行参数。如果不这样做,PostgreSQL将尝试使用PEER身份验证模式进行连接。

以下展示了重置密码、使用PEER身份验证失败以及使用TCP连接成功登录的过程。

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.
postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

失败:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

使用-h localhost成功:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
postgres=#

0
0 Comments
  1. 找到文件pg_hba.conf。例如,它可能位于/etc/postgresql-9.1/pg_hba.conf。

    cd /etc/postgresql-9.1/

  2. 备份它

    cp pg_hba.conf pg_hba.conf-backup

  3. 放置以下行(作为第一个未注释行,或作为唯一的行):

    对于下面的所有(本地和主机),除非复制,否则所有出现都必须改为以下方式,不应有MD5或同行身份验证。

    local all all trust

  4. 重新启动您的PostgreSQL服务器(例如,在Linux上:)

    sudo /etc/init.d/postgresql restart

    如果服务(守护程序)无法启动并在日志文件中报告:

    本地连接不受此版本支持

    您应该更改

    local all all trust

    host all all 127.0.0.1/32 trust

  5. 现在您可以连接为任何用户。作为超级用户postgres连接(请注意,超级用户名称可能在您的安装中不同。例如,在某些系统中它称为pgsql。)

    psql -U postgres

    psql -h 127.0.0.1 -U postgres

    (请注意,使用第一个命令,您将不总是连接到本地主机)

  6. 重置密码(“将my_user_name替换为 postgres ,因为您正在重置 postgres 用户”)

    ALTER USER my_user_name with password 'my_secure_password';

  7. 将旧的pg_hba.conf文件恢复为原样非常危险

    cp pg_hba.conf-backup pg_hba.conf

  8. 重新启动服务器,以使用安全的pg_hba.conf文件运行

    sudo /etc/init.d/postgresql restart

关于pg_hba文件的更多阅读:19.1.pghba.conf文件(官方文档)

0