在 PostgreSQL 中创建用户和数据库是很常见的操作,尤其是在 PostgreSQL 15+ 版本中,需要注意一些权限问题。

创建用户和数据库

1
2
3
4
5
6
7
8
9
10
11
-- 1. 创建用户(角色)
CREATE ROLE myuser WITH LOGIN PASSWORD 'yourpassword' VALID UNTIL 'infinity';

-- 2. 高版本(15+)需要先授权给当前用户
GRANT myuser TO postgres;

-- 3. 创建数据库并指定所有者
CREATE DATABASE mydb WITH ENCODING='UTF8' OWNER=myuser CONNECTION LIMIT=-1;

-- 4. 撤销临时授权
REVOKE myuser FROM postgres;

修改和删除

1
2
3
4
5
-- 修改数据库所有者
ALTER DATABASE mydb OWNER TO postgres;

-- 删除数据库
DROP DATABASE mydb;

参数说明

参数 说明
LOGIN 允许该角色登录
PASSWORD 设置密码
VALID UNTIL 'infinity' 密码永不过期
ENCODING='UTF8' 数据库编码为 UTF-8
OWNER 指定数据库所有者
CONNECTION LIMIT=-1 不限制连接数

注意事项

  • PostgreSQL 15+ 创建数据库时需要先 GRANT 角色给当前用户,完成后可撤销
  • 密码建议使用强密码,可设置具体过期时间替代 infinity
  • 只有数据库所有者或超级用户才能删除数据库

参考