MySQL 用户规划及权限设置

1.MySQL用户规划原则


数据库一般划分为生产库,准生产库,测试库,开发库。 

#生产库用户划分原则

##DBA:有所有权限,超级管理员权限 

用户名:dbadmin_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
普通DBA管理某库:
GRANT ALL PRIVILEGES ON 库名 TO 'dbadmin_标识'@'IP' identified by '密码';
高级DBA管理所有库:
GRANT ALL ON *.* TO 'dbadmin_标识'@'IP' identified by '密码';

##应用程序:分配SELECT, INSERT, UPDATE, DELETE, EXECUTE, EVENT,TRIGGER FILE权限。

用户名:appadmin_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
GRANT INSERT,UPDATE,SELECT,DELETE,EXECUTE ON DBHWY.* TO 'appadmin_标识'@'IP';
GRANT FILE ON *.* TO 'appadmin'@'172.16.115.%';

##测试人员:select某些业务表权限,或某库。 

用户名:dbread_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
GRANT SELECT ON 库名 TO 'dbread_标识'@'IP段' identified by '密码';

##开发人员:与测试人员权限一样,可为同个用户。

原则:对操纵所有的数据库对象,包括表、索引、视图、存储过程等,都必须经由DBA来
审核,决定是否执行,以及执行的详细步骤。




#准生产库用户划分原则

为保持数据库稳定性,准生产数据库要求与生产数据库一致。




#测试库库用户划分原则


##DBA:所有权限。 

用户名:dbadmin_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
普通DBA管理某库:
GRANT ALL PRIVILEGES ON 库名 TO 'dbadmin_标识'@'IP' identified by '密码';

##应用程序:分配SELECT, INSERT, UPDATE, DELETE, EXECUTE, EVENT,TRIGGER FILE权限。

用户名:appadmin_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
GRANT INSERT,UPDATE,SELECT,DELETE,EXECUTE ON DBHWY.* TO 'appadmin_标识'@'IP';
GRANT FILE ON *.* TO 'appadmin'@'172.16.115.%';

##测试人员:有 SELECT 权限。

用户名:dbread_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
GRANT SELECT ON 库名 TO 'dbread_标识'@'IP' identified by '密码';

##开发人员:有 INSERT,UPDATE,SELECT,DELETE 权限。

用户名:dbwrite_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
GRANT INSERT,UPDATE,SELECT,DELETE ON 库名.* TO 'dbwrite_标识'@'IP' identified by '密码';

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




#开发库用户划分原则

##DBA:所有权限 

##应用程序:分配SELECT, INSERT, UPDATE, DELETE, EXECUTE, EVENT,TRIGGER FILE权限。

用户名:appadmin_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
GRANT INSERT,UPDATE,SELECT,DELETE,EXECUTE ON DBHWY.* TO 'appadmin_标识'@'IP';
GRANT FILE ON *.* TO 'appadmin'@'172.16.115.%';

##测试人员:有库表结构以及数据的所有操作权限。(与开发人员一至)

##开发人员:有库表结构以及数据的所有操作权限。

用户名:dbwrite_标识

密码:英文字母大小写共5位以上+特殊字符1位以上+数字3位以上=9位以上

语句:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, REFERENCES, INDEX, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EVENT, TRIGGER ON `HWYDB`.* TO 'dbwrite'@'172.16.115.%' identified by '密码';

 

原则:在开发数据库,测试人员、开发人员、数据分析人员对数据库中数据、表结构等
都有修改的权限,为不影响他人,在做操纵之前应以邮件方式通知大家。




权限                       意义                   
ALL [PRIVILEGES]        设置除GRANT OPTION之外的所有简单权限                   
ALTER                   允许使用ALTER TABLE                   
ALTER ROUTINE           更改或取消已存储的子程序                   
CREATE                  允许使用CREATE TABLE                   
CREATE ROUTINE          创建已存储的子程序                   
CREATE TEMPORARY TABLES 允许使用CREATE TEMPORARY TABLE                   
CREATE USER             允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。                   
CREATE VIEW             允许使用CREATE VIEW                   
DELETE                  允许使用DELETE                   
DROP                    允许使用DROP TABLE                   
EXECUTE                 允许用户运行已存储的子程序                   
FILE                    允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE                   
INDEX                   允许使用CREATE INDEX和DROP INDEX                   
INSERT                  允许使用INSERT                   
LOCK TABLES             允许对您拥有SELECT权限的表使用LOCK TABLES                   
PROCESS                 允许使用SHOW FULL PROCESSLIST                   
REFERENCES              未被实施                   
RELOAD                  允许使用FLUSH                   
REPLICATION CLIENT      允许用户询问从属服务器或主服务器的地址                   
REPLICATION SLAVE       用于复制型从属服务器(从主服务器中读取二进制日志事件)                   
SELECT                  允许使用SELECT                   
SHOW DATABASES          SHOW DATABASES显示所有数据库                   
SHOW VIEW               允许使用SHOW CREATE VIEW                   
SHUTDOWN                允许使用mysqladmin shutdown                   
SUPER                   允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。                   
UPDATE                  允许使用UPDATE                   
USAGE                   “无权限”的同义词                   
GRANT OPTION            允许授予权限    
--------------------------------------------------------------------------------------


ALL或ALL PRIVILEGES 代表指定权限等级的所有权限。
ALTER 允许使用ALTER TABLE来改变表的结构,ALTER TABLE同时也需要CREATE和INSERT权限。重命名一个表需要对旧表具有ALTER和DROP权限,对新版具有CREATE和INSERT权限。
ALTER ROUTINE 允许改变和删除存储过程和函数
CREATE 允许创建新的数据库和表
CREATE ROUTINE 允许创建创建存储过程和包
CREATE TABLESPACE 允许创建、更改和删除表空间和日志文件组
CREATE TEMPORARY TABLES 允许创建临时表
CREATE USER 允许更改、创建、删除、重命名用户和收回所有权限
CREATE VIEW 允许创建视图
DELETE 允许从数据库的表中删除行
DROP 允许删除数据库、表和视图
EVENT 允许在事件调度里面创建、更改、删除和查看事件
EXECUETE 允许执行存储过程和包
FILE 允许在服务器的主机上通过LOAD DATA INFILE、SELECT ... INTO OUTFILE和LOAD_FILE()函数读写文件
GRANT OPTION 允许向其他用户授予或移除权限
INDEX 允许创建和删除索引
INSERT 允许向数据库的表中插入行
LOCK TABLE 允许执行LOCK TABLES语句来锁定表
PROCESS 允许显示在服务器上执行的线程信息,即被会话所执行的语句信息。这个权限允许你执行SHOW PROCESSLIST和mysqladmin processlist命令来查看线程,同时这个权限也允许你执行SHOW ENGINE命令
PROXY 允许用户冒充成为另外一个用户
REFERENCES 允许创建外键
RELOAD 允许使用FLUSH语句
REPLICATION CLIENT 允许执行SHOW MASTER STATUS,SHOW SLAVE STATUS和SHOW BINARY LOGS命令
REPLICATION SLAVE 允许SLAVE服务器连接到当前服务器来作为他们的主服务器
SELECT 允许从数据库中查询表
SHOW DATABASES 允许账户执行SHOW DATABASE语句来查看数据库。没有这个权限的账户只能看到他们具有权限的数据库。
SHOW VIEW 允许执行SHOW CREATE VIEW语句
SHUTDOWN 允许执行SHUTDOWN语句和mysqladmin shutdown已经mysql_shutdown() C API函数
SUPER 允许用户执行CHANGE MASTER TO,KILL或mysqladmin kill命令来杀掉其他用户的线程,允许执行PURGE BINARY LOGS命令,通过SET GLOBAL来设置系统参数,执行mysqladmin debug命令,开启和关闭日志,即使read_only参数开启也可以执行update语句,打开和关闭从服务器上面的复制,允许在连接数达到max_connections的情况下连接到服务器。
TRIGGER 允许操作触发器
UPDATE 允许更新数据库中的表
USAGE 代表没有任何权限