MySQL数据库用户权限划分

数据库用户划分

权限划分一般原则

数据库一般划分为线上库,测试库,开发库。

对于线上库:

DBA:有所有权限,超级管理员权限
应用程序:分配insert、delete、update、select、execute、events、jobs权限。
测试人员:select某些业务表权限
开发人员:select某些业务表权限
原则:所有对线上表的操作,除了应用程序之外,都必须经由DBA来决定是否执行、已经什么时候执行等。

 测试库

DBA:所有权限。
测试人员:有insert、delete、update、select、execute、jobs权限。
数据分析人员:只有select查询权限
开发人员:有select权限。

原则:DBA有所有权限,而且严格控制表结构的变更,不允许除了dba之外的人对测试环境的库环境进行修改,以免影响测试人员测试。所有对测试库的表结构进行的修改必须由测试人员和DBA一起审核过后才能操作。

 开发库

DBA:所有权限
测试人员:有库表结构以及数据的所有操作权限。
开发人员:有库表结构以及数据的所有操作权限。
数据分析人员:有库表结构以及数据的所有操作权限。
这里大家可以愉快的玩耍了,只要不mysql服务不hang不downtime都OK了。



普通数据管理用户:

赋予对业务表的查询维护权限即可,授权sql如下:

GRANT SELECT, INSERT, UPDATE, DELETE ON d3307.* TOzengxiaoteng@'%' IDENTIFIED BY '0523';

·        1

·        1

 

开发人员账户:

赋予增删改查的权限,授权sql如下:

GRANT SELECT,INSERT,DELETE,UPDATE ON d3307.* TO huyan@'%'IDENTIFIED BY '0523';

授予创建、修改、删除 MySQL 数据表结构权限。

GRANT CREATE ON d3307.* TO huyan@’192.168.52.11’;

GRANT ALTER  ONd3307.* TO huyan@’192.168.52.11’;

GRANT DROP   ONd3307.* TO huyan@’192.168.52.11’;

授予操作 MySQL 外键权限:

GRANT REFERENCES ON d3307.* TO huyan@’192.168.52.11’;

授予操作 MySQL 临时表权限:

GRANT CREATE TEMPORARY TABLES ON d3307.* TO huyan@’192.168.52.11’;

授予操作 MySQL 索引权限:

GRANT INDEX ON d3307.* TO huyan@’192.168.52.11’;

授予操作 MySQL 视图、查看视图源代码 权限:

GRANT CREATE VIEW ON d3307.* TO huyan@’192.168.52.11’;

GRANT SHOW   VIEW ONd3307.* TO huyan@’192.168.52.11’;

授予操作 MySQL 存储过程、函数 权限:

GRANT CREATE ROUTINE ON d3307.* TO huyan@’192.168.52.11’;

GRANT ALTER ROUTINE ON d3307.* TO huyan@’192.168.52.11’;

GRANT EXECUTE       ON d3307.* TO huyan@’192.168.52.11’;

 

DBA人员账户

授予普通DBA管理某个MySQL数据库(test)的权限:

GRANT ALL PRIVILEGES ON test TO sysdba@'192.168.52.%';

授予高级 DBA 管理 MySQL 中所有数据库的权限:

GRANT ALL ON *.* TO sysdba@'192.168.52.%';

 

数据分析人员只读账号

只需要分配只读的权限:

GRANT SELECT ON d3307.* TO dataquery@'192.168.52.129'IDENTIFIED BY '20150523';

甚至有些用户,可以只分配读取某些表列的权限,如下所示:

GRANT SELECT ON test.* TO dataquery@’192.168.52.%’ IDENTIFIED BY‘20150523’;
GRANT SELECT(id,uname) ON d3307.t TO dataquery@’192.168.52.%’ ;

示列权限登录操作:

[root@data02 ~]# mysql --socket=/usr/local/mysql3307/mysql.sock-u dataquery -p20150523 -h192.168.52.130 -P3307

Welcome TO the MySQL monitor.  Commands END WITH ; OR \g.

Your MySQL CONNECTION id IS 18

SERVER VERSION: 5.6.12-LOG Source distribution

 

Copyright (c) 2000, 2013, Oracle AND/OR its affiliates. ALLrights reserved.

 

Oracle IS a registered trademark of Oracle Corporation AND/ORits

affiliates. Other NAMES may be trademarks of theirrespective

owners.

 

TYPE 'help;' OR '\h' FOR help. TYPE '\c' TO clear thecurrent input statement.

 

mysql> SELECT * FROM d3307.t;

ERROR 1142 (42000): SELECT command denied TO USER 'dataquery'@'data02'FOR TABLE 't'

mysql>

mysql> SELECT id,uname FROM d3307.t;

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

| id | uname |

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

|  1 | a     |

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

1 ROW IN SET (0.00 sec)

 

mysql>

 

 

参考文章资料:
http://dev.mysql.com/doc/refman/5.6/en/user-account-management.html
http://www.cnblogs.com/kissdodog/p/4173337.html
http://www.cnblogs.com/4php/p/4113593.html
http://blog.itpub.net/7607759/viewspace-716634

YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS