码迷,mamicode.com
首页 > 数据库 > 详细

mysql 第九篇文章~mysql用户和权限

时间:2017-10-11 19:14:18      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:注意事项   超级   grants   长度   table   存储过程   导致   过程   帐户   

简介:咱们来谈谈mysql用户和权限的东西吧

一 说明:

      mysql的用户体系分为几部分构成 

      1 host(访问IP限制) 2 user(用户) 3 password(密码) 4 privileges(权限) 5 dbname(库) 6 tablename(表)

      mysql授权表一共涉及到表,分别是user,tables_priv,columns_priv,db

     1)user表

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

    2)db表
     db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

   3)tables_priv表

   tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

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

      

二 相关用户权限:

      1 复制账户 grant REPLICATION SLAVE,REPLICATION Client

      2 研发程序帐户(普通)  grant select,insert,update,delete on  dbname.* to =>只包含增删查该得权限

         研发程序帐户(高级)  grant select,insert,update,delete,create,create routine,EXECUTE,create view,show view,ALTER,tigger on  dbname.* to

         1 存储过程权限问题:最终执行存储过程的用户也即存储过程定义者要具备存储过程定义语句中相关的各种权限。DBA在执行创建存储过程时候一定要以研发帐户进行创建,否则即便研发帐户有执行存储过程的权限,也无法执行

         2 视图权限问题:视图定义内部用户和host限制要尤其注意,可能导致用户无法访问视图(即便有show view权限)

         3 千万不要授予研发drop权限(想删除前先备份)

      3 DBA远程操作帐户 (在使用中)

         GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, PROCESS, INDEX, ALTER, SHOW DATABASES, SUPER, TRIGGER ON *.* TO ‘opdba‘@‘%‘ ;

          以下是权限讲解

          1 SUPER 执行kill命令

          2 SELECT,INSERT,UPDATE,DELETE DML权限

          3 CREATE DROP  创建删除权限 

          4 PROCESS 查看进程权限 (用于排查问题)

          5 ALTER 执行DDL操作

          6 TRIGGER 触发器权限(用于pt-osc执行DDL操作)

          7 INDEX 索引权限

          以上权限的组合对于我在日常工作中的所有工作已经完全够用,各位可以看着取舍         

      4  MHA 用户

          建议 all privileges

      5  监控用户(lepus)

           grant SELECT, PROCESS, SUPER,REPLICATION CLIENT

      6  inception用户

          建议与研发普通账号相同即可

三 相关的管理

         1 创建用户 

                1 password=`date +%s | sha256sum | base64 | head -c 12` 生成12位密码

                2 grant 权限 to dbname.* to ‘pro_user‘@‘host‘ identified by 建议针对库级别来做限制(跨库查询的进行特殊处理)     

         2 查看授权语句

               1 查看所有用户    

                 SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user;

               2 查看相应的授权语句

                 show grants for ‘user‘@‘host‘

         3 对用户进行二次授权(添加新权限,添加新host等)       

                1 查看授权语句 

                2 直接进行授权即可(不会更改密码,这也算一个小技巧吧)

                 举例 添加新host

                 GRANT USAGE ON *.* TO ‘lepus_user‘@‘1.1‘ IDENTIFIED BY PASSWORD ‘*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19‘ 

                  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `lepus`.* TO ‘lepus_user‘@‘localhost‘

                  授权 

                 GRANT USAGE ON *.* TO ‘lepus_user‘@‘1.2‘ IDENTIFIED BY PASSWORD ‘*2470C0C06DEE42FD16C9D1E19‘ 

                  即可

         4 删除用户

                  drop user ‘user‘@‘host‘ (一定要写全)

         5 回收权限

                 revoke insert on lepus.* from ‘lepus_user‘@‘localhost‘;

          6 操作完千万别忘了 

                flush  privileges ;

    四 注意事项

        1 对于数据库用户的管理一定要开始就要规范起来,包括命名,长度,权限之类的

        2 特别注意超级权限,拥有drop,alter用户的收集与管理

        3 不建议直接对mysql.user表进行直接update delete操作

这就是我对mysql用户管理的见解

 

 

           

    

         

 

 

  

mysql 第九篇文章~mysql用户和权限

标签:注意事项   超级   grants   长度   table   存储过程   导致   过程   帐户   

原文地址:http://www.cnblogs.com/danhuangpai/p/7651300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!