我正在postgresql上构建一个Rails项目,但是当我
时rake db:migrate
我收到以下错误:
permission denied to create extension "uuid-ossp"
以下是我的database.yml的样子:
app_common: &app_common
adapter: postgresql
host: 127.0.0.1
port: 5432
encoding: unicode
pool: 5
username: root
password:
答案 0 :(得分:33)
想出来,我需要postgresql并将root角色更改为超级用户:
$psql
ALTER USER root WITH SUPERUSER;
答案 1 :(得分:17)
ALTER USER root WITH SUPERUSER
如果数据库的用户是root
但是如果它不是,则需要先运行psql作为超级用户,然后再运行此命令,以便运行
sudo -u postgres psql postgres
然后
ALTER USER mydb_user WITH SUPERUSER;
答案 2 :(得分:2)
解决方案:
ALTER USER root WITH SUPERUSER;
OR
使用PGADMIN,步骤:
本地主机-> 登录角色-> 右键单击角色,即postgres -> **在“角色特权”选项卡中**-> 检查超级用户-> 确定。
享受。
答案 3 :(得分:2)
或者,从 Postgresql 13 开始,对当前数据库具有 CREATE
权限的角色可以安装受信任的扩展,而无需成为 SUPERUSER
。
加载扩展通常需要与创建其组件对象所需的相同权限。对于许多扩展,这意味着需要超级用户权限。
但是,如果扩展在其控制文件中被标记为受信任,则任何对当前数据库具有 CREATE
权限的用户都可以安装它。
在这种情况下,扩展对象本身将由调用用户拥有,但包含的对象将由引导超级用户拥有(除非扩展的脚本明确将它们分配给调用用户)。此配置使调用用户有权删除扩展程序,但不能修改其中的单个对象。
根据您的安装,受信任的扩展程序至少应如下:
btree_gin
btree_gist
citext
cube
dict_int
fuzzystrmatch
hstore
intarray
isn
lo
ltree
pgcrypto
pg_trgm
plpgsql
seg
tablefunc
tcn
tsm_system_rows
tsm_system_time
unaccent
uuid-ossp
您可以再次检查或切换 trusted
文件中的 /usr/local/share/postgresql/extension/*.control
标志,具体取决于您的安装。
为 PostgreSQL 实例提供一个数据库 maindb
和两个角色:
postgres
(默认超级用户)jack
(有限权限)$ psql -U jack -d maindb
maindb=>CREATE EXTENSION plpgsql;
ERROR: permission denied to create extension "plpgsql"
HINT: Must have CREATE privilege on current database to create this extension.
maindb=> \q
显然 jack
不能将扩展添加到 maindb
,现在让我们给他们正确的权限,然后再试一次:
$ psql -U postgres
postgres=# GRANT CREATE ON DATABASE maindb to jack;
GRANT
postgres=# \q
$ psql -U jack -d maindb
maindb=>CREATE EXTENSION plpgsql;
CREATE EXTENSION
瞧,无需再授予 SUPERUSER
权限(无论如何您都不应该这样做)。
答案 4 :(得分:0)
对于 DBeaver,
<块引用>右键单击 DB -> 查看数据库 -> 在属性下转到标签角色 -> 选择用户并为其分配角色。
对于超级用户角色,用户A为其他用户B分配超级用户角色,用户A应该是超级用户本身。