标签: sql-grant

无法在 mysql 上使用 root 向用户授予权限

我正在尝试向 mysql 上的用户授予显式权限,并且正在执行此操作(对于已创建的用户)

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, SHOW DATABASES, 
 CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, 
 CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER 
ON mydatabase.* 
TO 'myuser'@'localhost' ;
Run Code Online (Sandbox Code Playgroud)

但我收到这个奇怪的错误:

DB GRANT 和 GLOBAL PRIVILEGES 的使用不正确

我尝试与其他用户一起尝试其他模式,并授予所有特权,并且似乎有效。任何想法?

mysql sql database privileges sql-grant

9
推荐指数
1
解决办法
8928
查看次数

无法在 mysql 8.0.17 上授予选择

我想向每个主机的用户授予选择权限,但出现错误,您不允许创建用户

mysql>GRANT SELECT ON *.* TO 'alice'@'%' WITH GRANT OPTION;

ERROR 1410 (42000): 不允许您使用 GRANT 创建用户

我不想创建新用户,因为我使用了命令 CREATE USER

我尝试创建一个新用户,但授予命令也失败。

mysql sql-grant

7
推荐指数
1
解决办法
6123
查看次数

Mariadb 在没有用户名的情况下中止连接错误

在 MariaDB 中,我在错误日志中收到此警告。有没有办法在不知道用户名的情况下解决问题?

[Warning] Aborted connection 1101 to db: 'unconnected' user: 'unauthenticated' host: '127.0.0.1' (This connection closed normally without authentication)
Run Code Online (Sandbox Code Playgroud)

mysql mariadb sql-grant

7
推荐指数
1
解决办法
1万
查看次数

为什么角色无法删除,因为某些对象依赖于它

数据库“mydb”由角色“mydb_owner”拥有。

用户“currentuser”尝试使用以下命令从此数据库中删除角色“roletodelete”

revoke all on all tables in schema public,firma1 from "roletodelete" cascade;
revoke all on all sequences in schema public,firma1 from "roletodelete" cascade;
revoke all on database mydb from "roletodelete" cascade;
revoke all on all functions in schema public,firma1 from "roletodelete" cascade;
revoke all on schema public,firma1 from "roletodelete" cascade;
revoke mydb_owner from "roletodelete" cascade;
ALTER DEFAULT PRIVILEGES IN SCHEMA public,firma1 revoke all ON TABLES from "roletodelete";
GRANT "roletodelete" TO "currentuser";
reassign owned by "roletodelete" to mydb_owner;
drop owned …
Run Code Online (Sandbox Code Playgroud)

sql postgresql roles sql-revoke sql-grant

6
推荐指数
1
解决办法
8110
查看次数

PostgreSQL - 保护数据库并隐藏结构

我正在 postgreSQL 中部署一个数据库,并创建了一个能够执行某些功能的用户。

我撤销了刚刚创建的用户的所有权限,并授予执行以下命令的连接权限:

REVOKE ALL PRIVILEGES ON DATABASE <database> FROM my_user;
REVOKE ALL PRIVILEGES ON SCHEMA public TO my_user;
GRANT CONNECT ON DATABASE <database> TO my_user;
Run Code Online (Sandbox Code Playgroud)

但是当我用这个用户连接到数据库时,我能够读取所有表结构和所有函数源代码。有没有办法向该用户隐藏它?

我借此机会提出另一个问题:我只想与该用户执行函数(可能包括对数据库表进行选择、插入或更新),但我不想授予对表进行选择、更新或删除的权限。我正在使用“SECURITY DEFINER”,然后我授予执行权限,但我认为这可能有点不安全。我对吗?还有其他方法吗?

提前致谢。拉米斯

database security postgresql function sql-grant

5
推荐指数
1
解决办法
8897
查看次数

重新移位授予验证 HAS_TABLE_PRIVILEGE 失败

我正在与 Redshit 授予的组、模式、默认权限作斗争。当我尝试使用 HAS_TABLE_PRIVILEGE 检查一切是否正确

select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'insert') as insert,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'update') as update,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'delete') as delete, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'references') as references 
from pg_tables
where schemaname='datalab'
order by tablename
Run Code Online (Sandbox Code Playgroud)

我明白了:

An error occurred when executing the SQL command:
select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablena...

[Amazon](500310) Invalid operation: relation "dss__transaction" does not exist;

Execution time: 0.2s
1 statement failed.
Run Code Online (Sandbox Code Playgroud)

这里到底发生了什么?

permissions amazon-redshift sql-grant

5
推荐指数
1
解决办法
1530
查看次数

授予创建任何触发器与授予创建触发器

在 Oracle 中,您可以授予系统权限,例如

GRANT CREATE TRIGGER TO MY_USER;
Run Code Online (Sandbox Code Playgroud)

但您也可以通过这种方式授予权限

GRANT CREATE ANY TRIGGER TO MY_USER;
Run Code Online (Sandbox Code Playgroud)

由于系统权限是系统范围的,因此上面两条语句之间的区别在哪里。除了系统之外,附加的ANY- 关键字是否还授予其他任何内容?如果我添加一个Grant ... ON SCHEMA ...它就不再有系统权限了,是吗?

假设数据库中有来自不同用户的多个模式/对象,如果没有这些权限,就无法访​​问。

编辑

SELECT *
FROM DBA_SYS_PRIVS
WHERE grantee = 'MY_USER';
Run Code Online (Sandbox Code Playgroud)

回报

GRANTEE      PRIVILEGE                              
------------ -------------
MY_USER      CREATE ANY TRIGGER
MY_USER      CREATE TRIGGER
Run Code Online (Sandbox Code Playgroud)

(我省略了列ADMIN_OPTIONCOMMON

使用 MY_USER、MY_USER2 或任何其他用户查询时,结果是相同的。我在这里看不到与模式的联系。并且也可以只拥有CREATE ANY TRIGGER- 权限。

oracle oracle12c sql-grant

5
推荐指数
1
解决办法
3万
查看次数

有没有办法在 Redshift 中的表之间复制或克隆授权?

由于 Redshift 的仅追加性质,我们经常需要合并表以删除重复记录并显示记录的最新版本。为了准备此过程,需要重命名基表并创建其副本。将执行脚本来扫描插入表并将最新的唯一记录移动到新的基表中。但是,如果该表在此过程开始之前已经运行了一段时间,则表上可能存在在创建克隆时未复制的授权。

我们通常没有原始表 DDL,尽管我们可以通过https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_tbl_ddl.sql获取它,但这不会生成具有任何授权的表定义。

有没有办法复制带有就地拨款的表,或者生成脚本来根据旧表创建拨款?

已尝试使用https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_tbl_ddl.sql但这不会生成任何授予语句,只会生成 set Owner 语句。

也进行了研究has_table_privilege,但这似乎不是最简单的行动方案。

sql amazon-redshift sql-grant

5
推荐指数
1
解决办法
2931
查看次数

获取标识列的 nextval

在我的 postgreSQL DB 应用程序中,我有时需要在运行插入之前检索序列的下一个值。\n我曾经通过向我的用户授予对此类序列的 \xe2\x80\x9cusage\xe2\x80\x9d 权限来实现此目的并使用 \xe2\x80\x9cnextval\xe2\x80\x9d 函数。\n我最近开始使用 \xe2\x80\x9cGENERATED BY DEFAULT AS IDENTITY\xe2\x80\x9d 列作为主键,我仍然能够检索nextval 作为超级用户,但我无法将此类权限授予其他用户。我的错误在哪里\xe2\x80\x99?

\n\n

这是一个例子:

\n\n
-- <sequence>\nCREATE SEQUENCE public.apps_apps_id_seq\n    INCREMENT 1\n    START 1\n    MINVALUE 1\n    MAXVALUE 9223372036854775807\n    CACHE 1;\n\nALTER SEQUENCE public.apps_apps_id_seq\n    OWNER TO postgres;\n\nGRANT USAGE ON SEQUENCE public.apps_apps_id_seq TO udocma;\n\nGRANT ALL ON SEQUENCE public.apps_apps_id_seq TO postgres;\n-- </sequence>\n\n-- <table>\nCREATE TABLE public.apps\n(\n    apps_id integer NOT NULL DEFAULT nextval(\'apps_apps_id_seq\'::regclass),\n    apps_born timestamp without time zone NOT NULL DEFAULT now(),\n    apps_vrsn character varying(50) COLLATE pg_catalog."default",\n    apps_ipad character varying(200) COLLATE pg_catalog."default",\n    apps_dscr character …
Run Code Online (Sandbox Code Playgroud)

postgresql identity sequence nextval sql-grant

5
推荐指数
0
解决办法
4779
查看次数

Postgres。如何为新表自动授予SELECT权限?

我正在设置具有多个架构的 Postgres DB (AWS/RDS),并希望进行精细的访问控制。

每个模式都与一个应用程序相关。通常,应用程序将具有“写入”用户(INSERT、UPDATE、DELETE 等),但某些应用程序只需要从不同模式读取(SELECT)。

受到这个 AWS 博客的启发:https://aws.amazon.com/blogs/database/managing-postgresql-users-and-roles/ 我的 readusers 查询 writeusers 创建的表时遇到“权限被拒绝”的问题,即使我更改默认权限:

ALTER DEFAULT PRIVILEGES IN SCHEMA someschema GRANT SELECT ON TABLES TO some_read_role;
Run Code Online (Sandbox Code Playgroud)

重现步骤:

  1. 使用 masteruser postgres 创建 AWS RDS postgres (10.6) 实例

  2. (DB postgres) 作为用户 postgres:

    CREATE DATABASE somedb LC_COLLATE 'da_DK.utf8' LC_CTYPE 'da_DK.utf8' ENCODING 'UTF8' TEMPLATE template0;
    
    Run Code Online (Sandbox Code Playgroud)
  3. (DB somedb) 作为用户 postgres:

    REVOKE ALL ON DATABASE somedb FROM PUBLIC;
    CREATE SCHEMA clients;
    CREATE ROLE clients_read_role;
    GRANT CONNECT ON DATABASE somedb TO clients_read_role;
    CREATE ROLE clients_write_role;
    GRANT …
    Run Code Online (Sandbox Code Playgroud)

postgresql permissions amazon-rds sql-grant

5
推荐指数
1
解决办法
6620
查看次数