PostgreSQL中用于特定用户的数据库通配符

zbdgwd5y  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(141)

我正在尝试在PostgreSQL中创建一个用户,该用户可以创建具有特定格式的数据库。我使用以下命令创建用户并授予权限:

CREATE ROLE someuser PASSWORD 'SomePassW0rd' NOSUPERUSER CREATEDB INHERIT LOGIN;
GRANT ALL PRIVILEGES ON DATABASE 'hello_%'.* TO someuser;

字符串
这个想法是允许用户创建数据库,如“hello_world”,“hello_something”等。所以所有的都必须有“hello_”前缀。但不幸的是,它抛出以下错误:
第一个月
有没有人知道这个行为的正确语法是什么,或者这是否可能?

qyyhg6bp

qyyhg6bp1#

根据PostgreSQL手册,我认为直接从SQL做你想做的事情是不可能的。
https://www.postgresql.org/docs/current/sql-grant.html
我建议做一个程序,用户可以使用它来分析正则表达式模式,并在模式匹配时授予该数据库的所有权限。
例如在Python中:

import re

name = input("Name your DB")

if re.match("hello_[a-z_A-Z0-9]+", name):
    # Execute create DB SQL query from python
    # Execute grant all permissions SQL from python

字符串

相关问题