gpt4 book ai didi

sql - 为什么我仍然无法访问 PSQL 中的任何数据库函数?

转载 作者:行者123 更新时间:2023-11-29 12:43:08 24 4
gpt4 key购买 nike

这是我的 init.sql 文件:

DROP DATABASE IF EXISTS my_data;
CREATE DATABASE my_data;

DROP USER IF EXISTS u;
CREATE USER u WITH PASSWORD 'secret';

GRANT ALL ON ALL TABLES IN SCHEMA public TO u;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO u;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO u;

\c my_data;

CREATE TABLE users (
ID SERIAL PRIMARY KEY NOT NULL,
email VARCHAR NOT NULL DEFAULT '',
password VARCHAR NOT NULL DEFAULT '',
active SMALLINT NOT NULL DEFAULT '1',
created TIMESTAMP NOT NULL,
modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
salt VARCHAR NOT NULL DEFAULT ''
);

那么如果我:

psql -f init.sql

还有..

psql -d my_data -U u

my_data=> select * from users;

ERROR: permission denied for relation users

如果我刚刚授予此权限,为什么会被拒绝?

更多信息

my_data=> \z users
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+-------+-------+-------------------+--------------------------
public | users | table | |
(1 row)

最佳答案

您只授予了架构的权限,它与表是分开的。如果你想授予对表的权限,你也可以使用

GRANT ALL ON ALL TABLES IN SCHEMA public TO u;

请注意,如果您有序列或其他对象,它们也需要单独的权限。

这必须在创建表后设置,因为已为现有对象设置了权限。

如果你想为你可以使用的新对象设置默认权限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO u;

关于sql - 为什么我仍然无法访问 PSQL 中的任何数据库函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com