weixin_43123846 2026-01-30 10:45 采纳率: 0%
浏览 2

postgresql 18.1忘记密码

img


忘记了postgres的密码了,请问怎样可以重置?是postgresql 18.1的

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-01-30 10:47
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    对于 PostgreSQL 18.1(注意:PostgreSQL 并没有 18.1 版本,可能是你误记了版本号,常见的版本如 12、13、14、15 等),如果你忘记了 postgres 用户的密码,可以通过以下步骤进行重置。以下是详细的解决方案:


    🔒 一、问题分析

    PostgreSQL 的默认用户是 postgres,在安装过程中通常会设置一个密码。如果忘记密码,无法通过常规方式登录数据库。


    🛠️ 二、解决方法(适用于 Linux/Unix 系统)

    1. 停止 PostgreSQL 服务

    首先,停止 PostgreSQL 服务以修改配置文件:

    sudo systemctl stop postgresql
    

    或者根据你的系统使用不同的命令:

    sudo service postgresql stop
    

    2. 修改 PostgreSQL 配置文件

    编辑 PostgreSQL 的主配置文件 postgresql.conf,通常位于 /etc/postgresql/<version>/main/postgresql.conf,例如:

    sudo nano /etc/postgresql/15/main/postgresql.conf
    

    找到并修改以下行:

    # 将 listen_addresses 设置为 'localhost'
    listen_addresses = 'localhost'
    

    这一步是为了确保我们可以在本地访问数据库。


    3. 修改 pg_hba.conf 文件

    编辑 pg_hba.conf 文件,允许本地无密码登录:

    sudo nano /etc/postgresql/15/main/pg_hba.conf
    

    找到类似下面的条目:

    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    

    将其改为:

    # IPv4 local connections:
    host    all             all             127.0.0.1/32            trust
    

    这样就可以在本地无需密码登录了。


    4. 重启 PostgreSQL 服务

    保存文件后,重启 PostgreSQL 服务:

    sudo systemctl start postgresql
    

    或:

    sudo service postgresql start
    

    5. 登录 PostgreSQL 无需密码

    现在可以使用以下命令登录:

    sudo -i -u postgres
    psql
    

    或者直接:

    psql -U postgres
    

    此时不需要输入密码即可登录。


    6. 重置密码

    在 psql 中执行以下命令来重置密码:

    ALTER USER postgres WITH PASSWORD 'new_password';
    

    'new_password' 替换为你想要的新密码。


    7. 恢复 pg_hba.conf 配置

    为了安全起见,建议在重置完密码后,将 pg_hba.conf 恢复为原来的设置(比如 md5):

    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    

    然后重启 PostgreSQL 服务:

    sudo systemctl restart postgresql
    

    ✅ 三、总结(有序列表)

    1. 停止 PostgreSQL 服务

      sudo systemctl stop postgresql
      
    2. 修改 postgresql.conf 文件
      设置 listen_addresses = 'localhost'

    3. 修改 pg_hba.conf 文件
      host all all 127.0.0.1/32 md5 改为 trust

    4. 重启 PostgreSQL 服务

      sudo systemctl start postgresql
      
    5. 登录 PostgreSQL 无需密码

      sudo -i -u postgres
      psql
      
    6. 在 psql 中重置密码

      ALTER USER postgres WITH PASSWORD 'new_password';
      
    7. 恢复 pg_hba.confmd5
      保证安全性

    8. 重启 PostgreSQL 服务

      sudo systemctl restart postgresql
      

    ⚠️ 注意事项

    • 请确保你在安全环境下操作,避免暴露数据库权限。
    • 如果你使用的是 Windows 系统,操作略有不同,需要通过服务管理器和配置文件进行调整。
    • 不要使用 trust 长期开启,否则数据库会失去基本的安全保护。

    如果你能提供更准确的 PostgreSQL 版本(如 14 或 15),我可以给出更具体的路径和配置说明。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月30日