mysql学习之权限管理
数据库权限的意义:
为了保证数据库中的业务数据不被非授权的用户非法窃取,需要对数据库的访问者进行各种限制,而数据库安全性控制措施主要有这三种,第一种用户身份鉴别,手段可以是口令,磁卡,指纹等技术,只有拥有合法身份的人才可以进入数据库。第二种存取权限控制,不同角色,对数据库的存取权限是不同的,必须为每一个角色设置其访问的数据库对象、权限。第三种制定数据库管理的管理制度,制度最终约束人的行为,通过制定相应的规章制度,可以保证在合适的时间、由合适的人对数据进行合适的操作。
mysql对用户权限的检查分为两个阶段
1、是否可以与mysql服务器建立链接
2、是否具有某些操作权限(如:select update 等)
一、与mysql服务器建立链接
mysql服务器如何校验用户是否可以建立链接
1、验证你从哪来 host
2、你是谁 user
3、密码 password
链接mysql的方式:C:\Users\PC003>mysql -h192.168.6.223 -uroot -pjalja
参数解释:-h:从何处要建立链接
-u:user
-p:密码
mysql> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *CFAFE434FB0E5D64538901E668E1EACD077A54DF |
| root | % | *CFAFE434FB0E5D64538901E668E1EACD077A54DF |
+------+-----------+-------------------------------------------+
host=localhost表示可以使用默认主机进行链接(C:\Users\PC003>mysql -uroot -pjalja,C:\Users\PC003>mysql -hlocalhost -uroot -pjalja,C:\Users\PC003>mysql -h127.0.0.1 -uroot -pjalja)
host=%表示该服务器可以与它所在一个局域网(公网)内的所有主机建立链接,该方式在生产环境中不安全
host=192.168.6.224表示该服务器只能与192.168.6.224主机建立链接 C:\Users\PC003>mysql -h192.168.6.223 -uroot -pjalja
如何修改host:
mysql> update user set host='192.168.6.223' where user ='root'
mysql> flush privileges;刷新权限(因为修改后数据是在内存中每次操作用户权限相关操作都要进行刷新)
修改密码:
mysql> update user set password=password('111111') where user='root';
mysql> flush privileges;
二、mysql如何进行权限检查
mysql中有一个mysql库该库下user表检查该用户是否存在,db表检查该用户对哪些库有哪些操作权限,tables_priv表检查该用户对那些表有哪些操作权限。
创建用户:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%。
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
授权:
grant [权限1,权限2] on *.* to user@'host' identfied by 'password';
常用权限:all,create,drop,insert,delete,update,select
例如:授予ls用户所有库所有表的所有权限并可以从该局域网该网段任何主机登陆。
mysql> grant all on *.* to 'ls'@'192.168.6.%' identified by '111111';
使用该用户登陆:C:\Users\PC003>mysql -h192.168.6.223 -uls -p111111;
查看ls用户具体有哪些权限:
mysql> select * from mysql.user where user='ls' \G;
*************************** 1. row ***************************
Host: 192.168.6.%
User: ls
Password: *FD571203974BA9AFE270FE62151AE967ECA5E0AA
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin:
authentication_string: NULL
权限回收:收回ls的所有权限
mysql> revoke all on *.* from ls@'192.168.6.%';
授权某个库的权限:
mysql> grant all on blog.* to ls@'192.168.6.%';授予ls用户拥有blog数据库的所有权限。
这样ls用户在user表中没有权限,这时将进行db级别的权限检查
mysql> select * from mysql.db where user='ls' \G;
*************************** 1. row ***************************
Host: 192.168.6.%
Db: blog
User: ls
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y
回收ls用户所有权限并赋予某各表权限:授予ls用户blog库中user表crud权限
mysql> revoke all on *.* from ls@'192.168.6.%';
Query OK, 0 rows affected (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) mysql> grant insert,update,select,delete on blog.user to ls@'192.168.6.%';
Query OK, 0 rows affected (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
这样ls用户在db级别中没有权限,这时将进行tables_priv级别的权限检查:
mysql> select * from mysql.tables_priv where user='ls' \G;
*************************** 1. row ***************************
Host: 192.168.6.%
Db: blog
User: ls
Table_name: user
Grantor: root@localhost
Timestamp: 2017-02-09 14:35:38
Table_priv: Select,Insert,Update,Delete
Column_priv:
1 row in set (0.00 sec)
mysql权限控制流程:
注意:mysql的权限检查可以精确到某列数据。
mysql学习之权限管理的更多相关文章
- MYSQL数据库管理之权限管理
经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...
- Mysql 用户,权限管理的几点理解。
前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于m ...
- mysql 用户及权限管理 小结
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...
- MySQL Study之--MySQL用户及权限管理
MySQL Study之--MySQL用户及权限管理 MySQLserver通过MySQL权限表来控制用户对数据库的訪问.MySQL权限表存放在mysql数据库里.由mysql_install ...
- 2018/09/05《涂抹MySQL》【权限管理】学习笔记(二)
读 第四章<管理MySQL库与表> 第五章<MySQL的权限管理> 总结 1:当配置好 MySQL 数据库后,发现有几个默认的库,他们的意义和作用?(这里只做简单了解,之后用到 ...
- MySQL优化之——权限管理
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46763767 在mysql数据库中,有mysql_install_db脚本初始化权 ...
- mysql用户与权限管理笔记
今天想使用一下李刚那本书上的hibernate的Demo,试出了点问题,过程中就发现mysql的用户管理和权限管理上也有点东西要注意,所以顺便就写一下mysql用户管理和权限管理的笔记. 先说一说my ...
- MongoDB学习笔记—权限管理
1.MongoDB权限介绍 a 上篇文章中,我们在Linux下配置了MongoDB环境并且将其设置为服务随机器启动而启动,那么接下来这篇文章我们就来简单说一下MongoDB下对登录用户权限的管理. b ...
- MySQL用户与权限管理
执行mysql select 查询报错: SELECT command denied to user 'root'@'localhost' for table "xxx" 问题原因 ...
随机推荐
- Laravel Cache 使用
在项目中使用 laravel 的 cache 时,使用下面形式方法: $value = Cache::remember('users', $minutes, function() { return D ...
- HTML学习(八)列表和块
无序列表无序列表是一个项目的列表,此列项目使用粗体圆点(典型的小黑圆圈)进行标记.无序列表始于 <ul> 标签.每个列表项始于 <li>.<ul type=“”> ...
- csv和excel的区别
excel 文件只能通过excel打开,里面包含公式或者计算. csv文件是一种通用数据格式,可以用很多方式打开,比如excel.csv 以分割数据,用行分割符号分割行级数据,直接上个例子一目了然. ...
- FZU 1397 保送
网络流入门题. 源点到每一个学生连一条边,容量为1 每个学校到汇点连一条边,容量为L 符合要求的学生和学校之间连边,容量为1. 从源点到汇点的最大流就是答案. #include<cstdio&g ...
- 起步X5 的铛铛的安装部署过程
(2017年1月)主要资料: 1.铛铛的IM Server即时通信服务使用 actor https://github.com/actorapp/actor-platform ,开发者网站是:htt ...
- 自然语言处理高手_相关资源_开源项目(比如:分词,word2vec等)
(1) 中科院自动化所的博士,用神经网络做自然语言处理:http://licstar.net (2) 分词项目:https://github.com/fxsjy/jieba(3) 清华大学搞的中文分词 ...
- jstree使用小结(三)
操作节点的这几个事件都比较简单: 如下 var $tree=$('#tree1'); $tree.jstree({...}); //选中节点 $tree.on('select_node.jstree' ...
- Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)
A. Two Semiknights Meet 题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走.每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇? 由于骑 ...
- jade的特点
jade特点 1超强的可读性 2灵活易用的缩进 3块扩展 4代码默认进过编码处理,以增强安全性 5编译及运行时的上下文错误报告 6命令行编译支持 7html5模式(使用 !!!5文档类型) 8可选的内 ...
- UVa 341 - Non-Stop Travel
题目大意:给一个地区的地图,上面有若干路口,每个路口因为红灯的缘故要耽误一些时间,给出起点和终点,找出最短路径使得耽误时间最短. 单源最短路问题,Dijkstra算法.同时还要打印路径. #inclu ...