当前位置:在线工具>加密解密>PostgreSQL密码生成工具

🐘 PostgreSQL 密码生成工具

支持 md5 / scram-sha-256 · 生成哈希及 SQL 语句
用户名用于生成 md5 哈希,且为必填项
PostgreSQL 10+ 默认使用 scram-sha-256
等待生成...
等待生成...

📖 关于 PostgreSQL 密码

🔍 哈希算法
PostgreSQL 支持 `md5` 和 `scram-sha-256` 两种密码哈希方法。`scram-sha-256` 更安全,是 PostgreSQL 10+ 的默认选项。
⚙️ md5
格式:`md5` + `md5(password + username)`。已弃用,仅用于兼容旧版本。
⚙️ scram-sha-256
使用 PBKDF2 和 HMAC-SHA-256,包含随机盐和迭代计数(4096),提供更强的抗暴力破解能力。
📌 使用场景
创建用户、修改密码、迁移数据库时生成对应的密码哈希或 SQL 脚本。
💧 示例
已预填默认值,助您快速上手。点击清空,重新输入。
PostgreSQL创建新用户

在PostgreSQL中创建新用户通常通过使用CREATE ROLECREATE USER命令来完成。这两种命令在很多情况下是等价的,但值得注意的是,CREATE ROLE命令提供了更多的选项和灵活性,例如可以创建具有不同属性的角色(如登录角色、无登录角色等)。

使用CREATE USER命令

CREATE USER username WITH PASSWORD 'password';

这里的username是你希望创建的用户名,password是该用户的密码。

使用CREATE ROLE命令

CREATE ROLE username WITH LOGIN PASSWORD 'password';

在这个例子中,WITH LOGIN表明这个角色可以登录到数据库。如果你想创建一个仅用于权限分配而不允许登录的角色,你可以使用NOLOGIN选项:

CREATE ROLE username WITH NOLOGIN PASSWORD 'password';

分配权限

创建用户后,你可能还需要为其分配权限。例如,如果你想让这个用户能够访问某个数据库,你可以使用以下命令:

ALTER ROLE username SET search_path TO schema_name, public;
GRANT CONNECT ON DATABASE dbname TO username;

这里,schema_name是你希望用户默认访问的schema,dbname是数据库名称。如果你想让用户能够访问并修改数据库中的表,你还可以添加:

GRANT ALL PRIVILEGES ON DATABASE dbname TO username;

示例:创建一个可以登录的用户并赋予权限

1. 创建用户:

CREATE USER newuser WITH PASSWORD 'securepassword';

2. 赋予用户登录权限(如果使用CREATE ROLE):

ALTER ROLE newuser WITH LOGIN;

3. 赋予用户访问特定数据库的权限:

GRANT CONNECT ON DATABASE mydatabase TO newuser;
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO newuser;  -- 赋予所有权限,根据需要调整

4. (可选)设置默认schema:

ALTER ROLE newuser SET search_path TO myschema, public;

确保在执行这些命令时你有足够的权限(通常是作为超级用户或具有相应权限的用户)。如果你在创建用户时遇到权限问题,可能需要以超级用户(如postgres)身份登录或使用psql-U选项指定超级用户。例如:

psql -U postgres -d yourdatabase -c "CREATE USER newuser WITH PASSWORD 'securepassword';"

这样你就可以成功地在PostgreSQL中创建新用户并分配相应的权限了。