Skip to content

[Feature] PostgreSQL Cannot Bind Existing Users Due to “Username Already Exists” Error #13868

Description

@Cikaros

1Panel Version

v2.3.1

Please describe your needs or suggestions for improvements

保留 PostgreSQL 数据文件,删除数据库应用后重建(初始化时使用原来的 root 账号和密码),通过「数据库 → 从服务器同步」可以同步出原有的数据库列表,但此时列表中没有绑定密码。点击「绑定账号」并输入原来已存在的账号和密码时,提示"用户名已存在",无法完成绑定。

目前 PostgreSQL 的绑定账号行为是新建用户,而 MySQL / MariaDB 的绑定账号是兼容已有用户,两者行为不一致,导致上述场景下 PostgreSQL 无法绑定已有用户。

Please describe the solution you suggest

No response

Additional Information

复现步骤
保留 PostgreSQL 数据文件,删除数据库应用;
重新创建 PostgreSQL 应用,初始化时使用原来的 root 账号和密码;
进入「数据库」菜单,通过「从服务器同步」同步现有数据库信息,得到原有数据库列表(此时列表中未绑定数据库密码);
点击「绑定账号」,输入原来已存在的账号和密码;
提示"用户名已存在",绑定失败。

期望的结果
PostgreSQL 的「绑定账号」与 MySQL / MariaDB 保持一致:当用户已存在时,校验密码后直接绑定该已有用户,而不是强制新建用户。

实际的结果
提示"用户名已存在",无法绑定,只能新建一个不同名称的用户绕过。

补充说明
官方已在交流群确认:pg 这边绑定是新建用户,mysql / mariadb 是兼容已有用户。
常见场景:通过保留数据文件来迁移 / 恢复数据库,此时原用户和库仍然存在,无法绑定已有用户会影响使用。
建议方向:绑定账号时先检测用户是否存在;若存在则校验密码并绑定,不存在再走新建逻辑(仅针对 PostgreSQL)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions