知识点十六:MySQL的账号权限赋予(33)

  一、MySQL权限简介

    关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界。比如只允许你执行select操作,那么你就不能执行update操作。只允许你从某台机器上连接mysql,那么你就不能从除那台机器以外的其他机器连接mysql。

    那么Mysql的权限是如何实现的呢?这就要说到mysql的两阶段验证,下面详细介绍:

      第一阶段:服务器首先会检查你是否允许连接。因为创建用户的时候会加上主机限制,可以限制成本地、某个IP、某个IP段、以及任何地方等,只允许你从配置的指定地方登陆。

      第二阶段:如果你能连接,Mysql会检查你发出的每个请求,看你是否有足够的权限实施它。比如你要更新某个表、或者查询某个表,Mysql会查看你对哪个表或者某个列是否有权限。

           再比如,你要运行某个存储过程,Mysql会检查你对存储过程是否有执行权限等。

      MYSQL到底都有哪些权限呢?从官网复制一个表来看看:

           

      MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明: 

             

  二、作用和意义:
    MySQL权限系统主要用来对连接到数据库的用户进行权限的验证,以此来判断此用户是否属于合法用户。如果是合法的用户,则赋予相应的数据库权限。

    1.MySQL权限经验原则:

       权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:

       1、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。

       2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。

       3、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。

       4、为每个用户设置满足密码复杂度的密码。

      5、定期清理不需要的用户。回收权限或者删除用户。

  三、查看当前的数据库的用户
      用户管理
        use mysql;
      查看
        SELECT host,user FROM user;
  四、MySQL权限应用:
    1.GRANT命令使用说明:
      先来看一个例子,创建一个只允许从本地登录的超级用户test,并允许将权限赋予别的用户,密码为test@feihong.111

       GRANT ALL PRIVILEGES ON *.* TO test@'localhost' IDENTIFIED BY 'test@feihong.111'
         WITH GRANT OPTION;

      GRANT命令说明:

        ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限提到的权限。

        ON 用来指定权限针对哪些库和表。

        *.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。

        TO 表示将权限赋予某个用户。

        feihong@'localhost' 表示feihong用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,

          以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。

        IDENTIFIED BY 指定用户的登录密码。

        WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。

        注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其他用户授权。

        备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加了一个select权限,然后又给用户添加了一个insert权限,那么该用户就

          同时拥有了selecinsert权限。

 --创建一个test1用户,密码为:test@feihong.111
--可以对所有数据库操作,并可把权限赋值给其他用户
GRANT ALL PRIVILEGES ON *.*
TO test1@'localhost'
IDENTIFIED BY 'test1@feihong.111'
WITH GRANT OPTION; --创建一个test2用户,密码为:test@feihong.111
--可以对所有数据库进行更新和删除权限,并可把权限赋值给其他用户
GRANT UPDATE,DELETE ON *.*
TO test2@'localhost'
IDENTIFIED BY 'test2@feihong.111'
WITH GRANT OPTION; --创建一个test用户,密码为:test3@feihong.111
--可以对一个数据库中的所有表具有所有权限,并可把权限赋值给其他用户
GRANT ALL PRIVILEGES ON nzjj.*
TO test3@'localhost'
IDENTIFIED BY 'test3@feihong.111'
WITH GRANT OPTION;

添加用户权限测试

    2.1:查看用户权限

 --创建一个超级用户
--创建一个只允许从本地登录的超级用户feihong,并允许将权限赋予别的用户,
--密码为test@feihong.111
GRANT ALL PRIVILEGES ON *.*
TO feihong@'localhost'
IDENTIFIED BY 'test@feihong.111'
WITH GRANT OPTION; --创建一个网站用户(程序用户)
--创建一个一般的程序用户,这个用户可能只需要SELECT, INSERT, UPDATE, DELETE,
--CREATE TEMPORARY TABLES等权限如果有存储过程还需要加上EXECUTE权限,一般是指定内网网段192.168.100网段。
GRANT USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE
ON `test`.* TO webuser@'192.168.100.%'
IDENTIFIED BY 'test@feihong.111'; --创建一个普通用户(仅有查询权限)
GRANT USAGE,SELECT ON `test`.* TO public@'192.168.100.%'
IDENTIFIED BY 'public@feihong.111';

默认数据

      使用如下命令可以方便的查看到某个用户的权限:

        SHOW GRANTS FOR 'webuser'@'192.168.100.%';

    2.2:删除用户

      删除用户,不仅仅要删除用户的名称,还应该删除用户拥有的权限。

      注意删除用户不要使用DELETE直接删除,因为使用DELETE删除后用户的权限并未删除,新建同名用户后又会继承以前的权限。正确的做法是使用DROP USER命令删除用户,

        比如要删除'webuser'@'192.168.100.%'用户采用如下命令:

      ·  DROP USER 'webuser'@'192.168.100.%';

    2.3:修改账号密码:

      执行set password语句:

        set password for ‘账号名称’@’%’=password(’新密码’);

    2.4:对账号权限的资源设置:

      例如:创建一个zl账号,在mzjj数据库中具有SELECT权限,在每个小时查询的次数小于5次,最多同时有6个用户进行并发连接:

 GRANT SELECT ON mzjj.* TO zl@'localhost'
IDENTIFIED BY ''
WITH max_queries_per_hour 5 max_user_connections 6;
--查看用户名,每小时查询次数,最多连接数
SELECT user,max_questions,max_connections FROM user WHERE user='zl';

对账号权限资源测试

MYSQL进阶学习笔记十五:MySQL 的账号权限赋予!(视频序号:进阶_33,34)的更多相关文章

  1. MYSQL进阶学习笔记十:MySQL慢查询!(视频序号:进阶_23-24)

    知识点十一:MySQL 慢查询的应用(23) 一.慢查询定义 MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为慢查询. 查看时间限制 show variables lik ...

  2. MYSQL初级学习笔记三:数据的操作DML!(视频序号:初级_24,25,36)

    知识点五:数据的操作DML(24,25,36) 插入数据: --测试插入记录INSERT CREATE TABLE IF NOT EXISTS user13( id TINYINT UNSIGNED ...

  3. linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)

    本节学习的命令:grep 本节学习的技能: grep对文本的匹配 正则表达式的使用 知识点十:grep及正则表达式(4_4) grep,egrep,fgrep: grep: 根据模式搜索文本,并将符合 ...

  4. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  5. MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)

    知识点十五:MySQL 的应用程序优化(32) 一.访问数据库采用连接池 把连接当做对象或设备,统一放在‘连接池’里.凡是需要访问数据库的地方都从连接池里取连接 二.采用缓存减少对于MySQL的访问: ...

  6. MYSQL进阶学习笔记九:MySQL事务的应用!(视频序号:进阶_21-22)

    知识点十:MySQL 事务的应用 (21-22) 为什么要引入事务: 为什么要引入事务这个技术呢?现在的很多软件都是多用户,多程序,多线程的.对同一表可能同时有很多人在用,为保持数据的一致性,所以提出 ...

  7. MYSQL进阶学习笔记八:MySQL MyISAM的表锁!(视频序号:进阶_18-20)

    知识点九:MySQL MyISAM表锁(共享读锁)(18) 为什么会有锁: 打个比方,我们到淘宝买一件商品,商品只有一件库存,这时候如果还有另外一个人也在买,那么如何解决是你买到还是另一个人买到的问题 ...

  8. MySQL高级学习笔记(五):查询截取分析

    文章目录 慢查询日志 是什么 怎么玩 说明 查看是否开启及如何开启 默认 开启 那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢? Case 配置版 日志分析工具mysqldumpsl ...

  9. (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)

    一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...

随机推荐

  1. vue框架及其

    Vue常用UI框架 PC端: 1. ElementUI:http://element-cn.eleme.io/#/zh-CN 2. iView:https://www.iviewui.com/ 3. ...

  2. javascript --- 继承小结

    回顾之前学到的知识,大体上可以分为两类: 1. 基于构造器工作的模式. 2. 基于对象的工作模式. 3. 是否使用原型 4. 是否执行属性拷贝. 5. 两者都有(执行原型属性拷贝) 下面我们把之前的知 ...

  3. 【Navicat preminm】64位的Navicat preminm注册

    百度云盘 技术-->Navicat preminm+破解

  4. Delphi图像处理 -- 文章索引

    转载:http://blog.csdn.net/maozefa/article/details/7188354 本文对已发布<Delphi图像处理>系列文章进行索引链接,以方便阅读和查找. ...

  5. Delphi图像处理 -- 颜色矩阵变换

    转载自阿发伯:http://blog.csdn.net/maozefa/article/details/8316430 阅读提示:     <Delphi图像处理>系列以效率为侧重点,一般 ...

  6. NATSserver配置具体解释

    NATSserver配置具体解释 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 虽然NATS能够无配置的执行,但也能 ...

  7. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  8. Zoj2421 广搜

    <span style="color:#330099;">/* M - 广搜 加强 Time Limit:2000MS Memory Limit:65536KB 64b ...

  9. 简单的看Unicode和UTF-8的区别

    作者:uuspider链接:http://www.zhihu.com/question/23374078/answer/65352538来源:知乎著作权归作者所有,转载请联系作者获得授权. 举一个例子 ...

  10. linux 信号屏蔽

    <span style="font-size:18px;">#include <sys/types.h> #include <unistd.h> ...