网站首页 > 文章中心 > 其它

mysql怎么给表的权限_mysql的权限表共有5

作者:小编 更新时间:2023-08-20 13:20:43 浏览量:454人看过

如何给mysql用户分配权限

当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限.

用户地址可以是localhost,也可以是ip地址、机器名字、域名.也可以用'%表示从任何地址连接.

'连接口令'不能为空,否则创建失败.

MySQL 数据库,如何分角色权限建表?

角色的概念

角色就是一组针对各种数据库权限的集合.比如,把一个角色分配给一个用户,那这个用户就拥有了这个角色包含的所有权限.一个角色可以分配给多个用户,另外一个用户也可以拥有多个角色,两者是多对多的关系.不过 MySQL 角色目前还没有提供类似于其他数据库的系统预分配的角色.比如某些数据库的 db_owner、 db_datareader 、 db_datawriter 等等.那此时此刻呢我分几个方面,来示例说明角色的使用以及相关注意事项.

mysql怎么给表的权限_mysql的权限表共有5-图1

示例 1:一个完整角色的授予步骤

用管理员创建三个角色:db_owner, db_datareader, db_datawriter

mysql create role db_owner,db_datareader,db_datawriter;

mysql grant all on ytt_new.* to db_owner;

Query OK, 0 rows affected (0.01 sec)

mysql grant select on ytt_new.* to db_datareader;

mysql grant insert,delete,update on ytt_new.* to db_datawriter;

分别授予这三个用户对应的角色.

-- 授权角色

mysql grant db_owner to ytt1;

-- 激活角色

mysql set default role db_owner to ytt1;

Query OK, 0 rows affected (0.00 sec)

好了,全部的角色授予的一套完整步骤.那上面有点非常规的地方是激活角色这个步骤.MySQL 角色在创建之初默认是没有激活的,也就是说创建角色,并且给一个用户特定的角色,这个用户其实并不能直接使用这个角色,除非激活了才可以.

-- 用管理员登录并且创建用户

...

-- 查看当前角色列表

mysql select current_role();

+--------------------------------------------------------+

| current_role() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |

| +db_datareader+@+%+,+db_datawriter+@+%+,+db_owner+@+%+ |

①. row in set (0.00 sec)

-- 简单创建一张表并且插入记录, 检索记录,完了删掉这张表

mysql use ytt_new

Database changed

mysql create table t11(id int);

mysql insert into t11 values (1);

mysql select * from t11;

+------+

| id ? |

| ? ?1 |

mysql drop table t11;

其实意思是说,用户连接到 MySQL 服务器后,可以切换当前的角色列表,比如由 db_owner 切换到 db_datareader.

mysql set role db_datareader;

+---------------------+

| current_role() ? ? ?|

| +db_datareader+@+%+ |

-- 切换后,没有权限创建表

-- 切换到 db_owner,恢复所有权限.

mysql set role db_owner;

activate_all_roles_on_login:是否在连接 MySQL 服务时自动激活角色mandatory_roles:强制所有用户默认角色

-- 用管理员连接MySQL,

-- 设置默认激活角色

mysql set global activate_all_roles_on_login=on;

-- 设置强制给所有用户赋予角色db_datareader

mysql set global mandatory_roles='db_datareader';

mysql show grants;

+-------------------------------------------+

mysql create role db_test;

-- 可以创建角色,但是不能创建用户

mysql create user ytt10;

mysql \q

Bye

-- 角色和用户都能创建

那这里其实看到 create user 包含了 create role,create user 即可以创建用户,也可以创建角色.

mysql grant select on ytt_new.* to ytt11;

+-----------------------------------+

+--------------------------------------------+

角色撤销和之前权限撤销类似.要么 revoke,要么删除角色,那这个角色会从所有拥有它的用户上移除.

-- 删除所有角色

mysql drop role db_owner,db_datareader,db_datawriter;

-- 对应的角色也从ytt1上移除掉了

mysql show grants for ytt1;

+----------------------------------+

| Grants for ytt1@% ? ? ? ? ? ? ? ?|

| GRANT USAGE ON *.* TO +ytt1+@+%+ |

mysql怎么将grant priv的权限

grant 权限 on 数据库对象 to 用户

第一段:grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利.

grant delete on testdb.* to common_user@'%'

或者

第二段:grant 数据库开发人员,创建表、索引、视图、存储过程、函数...等权限.

grant 创建、修改、删除 MySQL 数据表结构权限.

grant 操作 MySQL 外键权限.

grant 操作 MySQL 临时表权限.

grant 操作 MySQL 索引权限.

grant 操作 MySQL 视图、查看视图源代码 权限.

grant 操作 MySQL 存储过程、函数 权限.

第三段:grant 普通 DBA 管理某个 MySQL 数据库的权限.

其中,关键字 "privileges" 可以省略.

第四段:grant 高级 DBA 管理 MySQL 中所有数据库的权限.

第五段:MySQL grant 权限,分别可以作用在多个层次上.

① grant 作用在整个 MySQL 服务器上:

这里在给一个用户授权多张表时,可以多次执行以上语句.例如:

grant execute on procedure testdb.pr_add to 'dba'@'localhost'

grant execute on function testdb.fn_add to 'dba'@'localhost'

第六段:查看 MySQL 用户权限

查看当前用户(自己)权限:

show grants;

查看其他 MySQL 用户权限:

第七段:撤销已经赋予给 MySQL 用户权限的权限.

revoke 跟 grant 的语法差不多,只需要把关键字 "to" 换成 "from" 即可:

第八段:MySQL grant、revoke 用户权限注意事项

① grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效.

这个特性一般用不到.实际中,数据库权限最好由 DBA 来统一管理.

授权表的内容有如下用途:

user表

user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限.在user表启用的任何权限均是全局权限,并适用于所有数据库.例如,如果你启用了DELETE权限,今天这一节列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑.

db表

db表列出数据库,而用户有权限访问它们.今天这一节指定的权限适用于一个数据库中的所有表.

host表

host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些.这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它.

tables_priv表

tables_priv表指定表级权限,今天这一节指定的一个权限适用于一个表的所有列.

columns_priv表

columns_priv表指定列级权限.这里指定的权限适用于一个表的特定列.

注:

对于GRANT USAGE ON,查看手册有如下介绍和实例:

mysql GRANT USAGE ON *.* TO 'zhangkh'@'localhost';

一个账户有用户名zhangkh,没有密码.该账户只用于从本机连接.未授予权限.通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限.它可以将所有全局权限设为'N'.假定你将在以后将具体权限授予该账户.

如何设置mysql用户的权限

①.、创建新用户

通过root用户登录之后创建

flush privileges ;//mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效

REVOKE select,insert ON what FROM testuser//取消用户testuser的【查询\插入】操作权限 ;

mysql怎么给数据库添加权限

这里只说使用GRANT语句的方法,当然还有直接修改MySQL表的方法,不过很麻烦,用的人不多~

前提是有MySQL root权限

例子:建立另一个超级用户(所有权限)的方法

*.* 中第一个星星是数据库名(*为所有数据库),第二个星星是表名(*为前面数据库下的所有表)

ALL 是指全部语句的操作权限(经常看到虚拟主机等的用户没有DROP权限,就是这里做了手脚)

语法大概就是这样吧.

mysql怎么授予创建数据库的权限

MySQL命令行能否实现新建用户呢?答案无疑是肯定的.而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限.

首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的.

注:本操作是在WIN命令提示符下,phpMyAdmin同样适用.

用户:phplamp

用户数据库:phplampDB

①MySQL命令行新建用户

//登录MYSQL

@mysql -u root -p

@密码

//创建用户

//刷新系统权限表

mysqlflush privileges;

//退出后登录一下

mysqlexit;

@mysql -u phplamp -p

@输入密码

mysql登录成功

//登录MYSQL(有ROOT权限).我里我以ROOT身份登录.

//首先为用户创建一个数据库(phplampDB)

mysqlcreate database phplampDB;

//授权phplamp用户拥有phplamp数据库的所有权限

mysql其它操作

//如果想指定部分权限给一用户,可以这样来写:

//刷新系统权限表.

用户地址可以是localhost,也可以是ip地址、机器名字、域名.也可以用'%'表示从任何地址连接.

例如:

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章