关于mysql学习之权限管理详解

数据库权限的意义:

  为了保证数据库中的业务数据不被非授权的用户非法窃取,需要对数据库的访问者进行各种限制,而数据库安全性控制措施主要有这三种,第一种用户身份鉴别,手段可以是口令,磁卡,指纹等技术,只有拥有合法身份的人才可以进入数据库。第二种存取权限控制,不同角色,对数据库的存取权限是不同的,必须为每一个角色设置其访问的数据库对象、权限。第三种制定数据库管理的管理制度,制度最终约束人的行为,通过制定相应的规章制度,可以保证在合适的时间、由合适的人对数据进行合适的操作。

mysql对用户权限的检查分为两个阶段

1、是否可以与mysql服务器建立链接

2、是否具有某些操作权限(如:select update 等)

一、与mysql服务器建立链接

mysql服务器如何校验用户是否可以建立链接

1、验证你从哪来 host

2、你是谁 user

3、密码 password

链接mysql的方式:C:UsersPC003>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:UsersPC003>mysql  -uroot -pjalja,C:UsersPC003>mysql -hlocalhost -uroot -pjalja,C:UsersPC003>mysql -h127.0.0.1 -uroot -pjalja)

host=%表示该服务器可以与它所在一个局域网(公网)内的所有主机建立链接,该方式在生产环境中不安全

host=192.168.6.224表示该服务器只能与192.168.6.224主机建立链接  C:UsersPC003>mysql -h192.168.6.223 -uroot -pjalja

如何修改host:

mysql> update user set host='192.168.6.223' where user ='root'

mysql> flush privileges;刷新权限(因为修改后数据是在内存中每次操作用户权限相关操作都要进行刷新)

修改密码:

关于Objective 关于Objective

本文档主要讲述的是关于Objective-C手动内存管理的规则;在ios开发中Objective-C 增加了一些新的东西,包括属性和垃圾回收。那么,我们在学习Objective-C之前,最好应该先了解,从前是什么样的,为什么Objective-C 要增加这些支持。有需要的朋友可以下载看看

关于Objective 0 查看详情 关于Objective

mysql> update user set password=password('111111') where user='root';mysql> flush privileges;

二、mysql如何进行权限检查

mysql中有一个mysql库该库下user表检查该用户是否存在,db表检查该用户对哪些库有哪些操作权限,tables_priv表检查该用户对那些表有哪些操作权限。

创建用户并授权:

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:UsersPC003>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: YCreate_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: YCreate_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,DeleteColumn_priv:1 row in set (0.00 sec)

mysql权限控制流程:

关于mysql学习之权限管理详解

注意:mysql的权限检查可以精确到某列数据。

以上就是关于mysql学习之权限管理详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/797064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月26日 16:26:25
下一篇 2025年11月26日 16:31:32

相关推荐

发表回复

登录后才能评论
关注微信