A@10.10.10.1:1521/ORCLPDB>GRANT CREATE SESSION TO b; Grant succeeded. CREATE SESSION TO a; Grant succeeded. HR@10.10.10.1:1521/ORCLPDB>GRANT SELECT ON EMPLOYEES TO a WITH GRANT OPTION; Grant succeeded. SELECT ON HR.EMPLOYEES TO b; Grant succeeded. WITH GRANT OPTION权限赋予的对象权限,在赋予用户的该权限被回收时,被WITH GRANT OPTION授予用户的对象权限也一并被级联收回。 ?END!
SQL命令 GRANT(一) 向用户或角色授予特权。 大纲 GRANT admin-privilege TO grantee [WITH ADMIN OPTION] GRANT role TO grantee [WITH ADMIN OPTION] GRANT object-privilege ON object-list TO grantee [WITH GRANT OPTION] GRANT SELECT ON CUBE[S] object-list TO grantee [WITH GRANT OPTION] GRANT column-privilege (column-list) ON table TO grantee [WITH GRANT 因为GRANT准备和执行非常快,而且通常只运行一次,所以 IRIS不会在ODBC、JDBC或动态SQL中为GRANT创建缓存查询。 执行GRANT命令时,会执行*的扩展。
领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折
SQL命令 GRANT(二) GRANT COLUMN-权限 列权限授予用户或角色对指定表或视图上的指定列列表的指定权限。这允许访问某些表列,而不允许访问同一表的其他列。 GRANT语句的TO子句指定要向其授予访问权限的用户或角色。在使用TO选项指定被授权者之后,可以选择指定WITH GRANT OPTION关键字子句,以允许被授权者也能够将相同的权限授予其他用户。 TO Chris 为了使Chris也能够将这些权限授予其他用户,GRANT命令包含WITH GRANT OPTION子句: GRANT %ALTER, SELECT, INSERT ON EMPLOYEES TO Chris WITH GRANT OPTION 可以使用%SQLCatalogPriv.SQLUsers()方法调用来查找GRANT语句的结果。 使用GRANT OPTION向模式授予权限允许被授权者能够将相同的模式权限授予其他用户。
一、系统权限 3个索引权限 Grant CREATE ANY INDEX to User_Name;//创建索引 Grant ALTER ANY INDEX to User_Name;/ /更改索引 Grant DROP ANY INDEX to User_Name;//删除索引 5个存储过程权限, CREATE PROCEDURE CREATE ANY PROCEDURE select,delete,insert,update on user1.t_hr to user2; grant all on user1.t_hr to user2; 具体存储过程执行权限 grant dw_manager TO sh WITH ADMIN OPTION; With Grant option;指定WITH GRANT OPTION以允许被授予者将对象特权授予其他用户和角色。 GRANT READ ON DIRECTORY bfile_dir TO hr WITH GRANT OPTION; 系统角色的权限 select * from dba_sys_privs where
此时data路径下,就会出现这些数据文件, 看到一些教程,说在首次配置时,可以在配置文件my.ini中设置skip-grant-tables参数, skip-grant-tables 顾名思义,该命令作用是跳过授权表 mysql> 但是这种跳过授权表的操作,毕竟不安全,相当于开了后门,现在将skip-grant-tables注释, # skip-grant-tables 然后在Windows的服务窗口重启MySQL
今天同事问了一个问题:“创建用户分配的权限是:grant connect,resource to user;,但是建立view的时候失败了,错误是权限不够,后来我给这个用户分配了创建view的权限,然后创建 我们知道,创建一个新用户时,网上各种的帖子包括书籍中经常用到一个grant connect,resource to user;,这样才能用这个用户登录数据库,那么这条语句的真正作用是什么呢? 1、首先,grant XXX to user;,grant是授权的作用,这里的XXX可以是一个角色role,也可以是权限,例如grant role to user;,或grant insert on table 创建角色: create role <role name> [IDENTIFIED BY <password>/USING <package>/EXTERNALLY/GLOBALLY ]; 赋予角色权限: grant object/system privilege> to <role name>; 从角色收回权限: revoke <privilege> from <role name>; 将角色赋予另一个角色或用户: grant
看到一些教程,说在首次配置时,可以在配置文件my.ini中设置skip-grant-tables参数, skip-grant-tables 顾名思义,该命令作用是跳过授权表,就是说谁都能进入MySQL看到所有数据表 mysql> 但是这种跳过授权表的操作,毕竟不安全,相当于开了后门,现在将skip-grant-tables注释, # skip-grant-tables 然后在Windows的服务窗口重启MySQL
简单用法: grant all on *.* to root@192.168.3.72 identified by ‘abc123’; 原语法: GRANT priv_type [(column_list object_type = TABLE | FUNCTION | PROCEDURE with_option = GRANT OPTION | MAX_QUERIES_PER_HOUR
在忘记MySQL密码的时候,会使用skip-grant-tables选项,下面记录一下在MySQL8.0环境中使用skip-grant-tables的情况。 mysqld程序使用skip-grant-tables选项启动 # . /bin/mysqld --skip-grant-tables --user=mysql update修改密码 登录MySQL数据库,设置密码 由于mysql 8.0不在支持password函数 The "); goto error; } ... } command_satisfy_acl_cache_requirement函数会调用skip_grant_tables函数 bool skip_grant_tables initialized; } 由于使用了skip-grant-tables选项,initialized变量为false。
三、grant授权 1.授予用户connect、resource角色权限。一般创建应用程序开发用户可以授予这两个角色的权限。 GRANT CONNECT,RESOURCE TO zhang; 2.授予用户chenmh用户zhang下person表的SELECT,DELETE,UPDATE,INSERT权限,授予具体的对象权限是对于权限严格控制的一种方案 GRANT SELECT,DELETE,UPDATE,INSERT ON zhang.person TO CHENMH ; ? 3.授予用户chenmh用户zhang下person表的所有权限 GRANT ALL PRIVILEGES ON zhang.person to chenmh; grant权限图表: ? ? 生产批量执行sql SELECT 'GRANT SELECT,DELETE,UPDATE,INSERT ON '||OWNER||'.'
使用GRANT赋予用户权限的时候通常有ADMIN OPTION和GRANT OPTION这两个OPTION。下面使用简单的实验来体会下这两种授权的用途。 SYS账户GRANT CREATE TABLE权限给user_a,但user_a则是没有权限授予user_b建表权限: ? 4. SYS账户使用WITH GRANT OPTION授予user_a查询dcsopen.t1表权限: ? 此时user_a可以查询表: ? 3. 使用WITH GRANT OPTION的权限授予方式,可传递授权。 2. 使用WITH GRANT OPTION的权限授予方式,当使用REVOKE收回权限时,传递的授权会自动收回。 3. GRANT OPTION用于对象权限,object privilege,例如SELECT ON TABLE。
mysql>grant all privileges on *.* to ‘root’@’%’; 说明:设置用户名为root,密码为空,可访问所有数据库* 3,设置指定用户名访问权限 mysql>grant option from 用户名 — 撤销所有权限 — 权限层级 — 要使用grant或revoke,您必须拥有grant option权限,并且您必须用于您正在授予或撤销的权限。 GRANT语法说明: GRANT privileges (columns) #privileges表示授予的权限,columns表示作用的列(可选) ON what 10; #设置资源 拥有WITH GRANT OPTION权限的用户可把自已所拥用的权限转授给其他用户,如: mysql>GRANT ALL ON db.* TO 'test'@'%' IDENTIFIED 他们是要用GRANT来删除的,如: GRANT USAGE ON *.* TO account REQUIRE NONE; #删除account帐号的SSL连接选项 GRANT USAGE
在 MySQL 里面,grant 语句是用来给用户赋权的。不知道你有没有见过一些操作文档里面提到,grant 之后要马上跟着执行一个 flush privileges 命令,才能使赋权语句生效。 如果我要给用户 ua 赋一个最高权限的话,语句是这么写的: grant all privileges on *.* to 'ua'@'%' with grant option; 这个 grant 命令做了两个动作 对于一个已经存在的连接,它的全局权限不受 grant 命令的影响。 需要说明的是,一般在生产环境上要合理控制用户权限的范围。我们上面用到的这个 grant 语句就是一个典型的错误示范。 而如果我们都是用 grant/revoke 语句来执行的话,内存和数据表本来就是保持同步更新的。 因此,正常情况下,grant 命令之后,没有必要跟着执行 flush privileges 命令。 总结 grant 语句会同时修改数据表和内存,判断权限的时候使用的是内存数据。因此,规范地使用 grant 和 revoke 语句,是不需要随后加上 flush privileges 语句的。
登链社区上周在 Gitcoin 创建了一个 Grant(“拨款申请”),需要社区小伙伴们的支持! Gitcoin Grant 是一个二次方捐赠平台,当一个项目收到的更多捐赠,以太坊基金会就会相应的赞助更多的拨款。
本篇文章Fayson主要介绍WITH GRANT OPTION的使用。 3.将default.ods_user表的SELECT权限赋予testrolea角色,并授予该角色GRANT权限 GRANT SELECT ON default.ods_user TO ROLE testrolea WITH GRANT OPTION; ? 3 GRANT用户授权给其他角色 1.完成上面步骤后,使用usera用户登录Hive ? WITH GRANT OPTION; ?
grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update %'; grant drop on testdb.* to developer@'192.168.0.%'; grant 操作 MySQL 外键权限。 grant all on *.* to dba@'localhost' 五、MySQL grant 权限,分别可以作用在多个层次上。 grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库 2. grant 作用在单个数据库上: grant select on testdb 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“ grant select on testdb.* to dba@localhost with grant
下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke; grant授权格式:grant 权限列表 on 库.表 to 用户名@'ip' identified by "密码"; revoke回收权限格式:revoke 权限列表 on 库.表 from 用户名@'ip'; 下面通过一些例子说明: 1.grant授权 1)grant 普通数据用户,查询、插入、更新 2)如果想让授权的用户,也可以将这些权限grant给其他用户,那么授权时需添加选项 "grant option"! 如下设置后,那么这个wang用户连接mysql后也可以将这些权限授予其他用户。 也就是说,grant不仅可以添加权限,也可以修改权限(实际上就是对同一'用户名'@'ip'设置权限,以覆盖之前的权限); grant修改后的权限将覆盖之前的权限! grant授权操作中其实不仅可以设置明文密码,也可以设置密文密码,如下: 1)grant 权限列表 on 库.表.* to 用户名@'ip' identified by "明文密码" 2)grant 权限列表
最近工作中需要使用到oauth,注意到oauth客户端的grant_type值可以指定为client_credentials和password两种,很好奇所以网上搜索了一下,发现stackoverflow 上一个帖子: https://stackoverflow.com/questions/34842895/difference-between-grant-type-client-credentials-and-grant-type-password-in-auth [1240] 这位网友注意到一个有趣的点: [1240] grant_type=client_credentials时,请求的响应中不包含refresh_token: [1240] 而grant_type 为password则包含refresh_token: [1240] 什么时候用client_credentials(客户端模式)作为grant_type? [1240] grant_type=password的情况下,请求access token时,需要在HTTP请求里加上client_id和client_secret两个参数。
数据库设置了“grant all privileges on . to ‘root’@’%’ identified by ‘password’ with grant option;”为什么远程登录还是看不到库 按理说,执行了 grant 命令之后,没有必要跟着执行 flush privileges 命令了。因为,grant 语句都是即时生效的。 即执行 grant 之后,db 和内存都会更新,并且它们是同步的。但现实情况是,我们执行了下面的语句后,我们再远程登录,还是看不到库。 ? 这其实是一起精进的同学忘记了一个重要的知识点。 那就是: grant 命令对于全局权限,同时更新了磁盘和内存。命令完成后即时生效,接下来新创建的连接会使用新的权限。 对于一个已经存在的连接,它的全局权限不受 grant 命令的影响。
在 MySQL 里面,grant 语句是用来给用户赋权的。不知道你有没有见过一些操作文档里面提到,grant 之后要马上跟着执行一个 flush privileges 命令,才能使赋权语句生效。 如果我要给用户 ua 赋一个最高权限的话,语句是这么写的: grant all privileges on *.* to 'ua'@'%' with grant option; 这个 grant 命令做了两个动作 对于一个已经存在的连接,它的全局权限不受 grant 命令的影响。 需要说明的是,一般在生产环境上要合理控制用户权限的范围。我们上面用到的这个 grant 语句就是一个典型的错误示范。 也就是说,grant 修改 db 权限的时候,是同时对磁盘和内存生效的。 grant 操作对于已经存在的连接的影响,在全局权限和基于 db 的权限效果是不同的。 grant 语句会同时修改数据表和内存,判断权限的时候使用的是内存数据。因此,规范地使用 grant 和 revoke 语句,是不需要随后加上 flush privileges 语句的。
扫码关注腾讯云开发者
领取腾讯云代金券