今天因为老大按排了个任务,优化下公司一项目的Mysql数据库,数据库一直用得还算顺手啦,只是懂怎么用,不懂其原理,要优化肯定先得学习一下原理,还是从安全入手吧,再怎么优化安全第一,首先来讲讲MYSQL的权限分配吧。
保证一个数据库的安全应该从四个方面去着手
1、外围网络的安全 局域网中的数据库比广域网中的数据库安全
2、主机的安全 尽量减少局域网内恶意入侵者登录数据库,篡改(删除)数据
3、数据库本身的安全 通过MySQL自带的权限系统、配置文件设置控制MySQL访问操作权限
4、代码的安全 SQL注入/业务逻辑的漏洞
数据库权限信息在grant tables系统表中(user,db,host,table_priv,column_priv)
权限的授予使用grant命令,去除使用revoke命令
查看用户权限使用 show grants from 'username'@'userhost'语句
权限分配的5个级别
1、全局权限控制(global level)
使用 *.* 设置权限 前一个'*'表示数据库,后一个'*'表示表名
grant ACTION on *.* to 'username'@'hostname' ACTION:alter,alter routine,create,create routine,create temporary tables,create user create view,delete,drop,execute,file,index,insert,lock tables,process,reload replication client,replication slave,select,show databases,show view,shutdown super,update,usage,
grant ACTION on databasename.* to 'username'@'hostname' ACTION:alter,alter routine,create,create routine,create temporary tables create view,delete,drop,execute,index,insert,lock tables select,show view,update
grant ACTION on databasename.tablename to 'username'@'hostname' ACTION:alter,create,delete,drop,index,insert,select,update
grant ACTION(column1,column2,…) on databasename.tablename to 'username'@'hostname' ACTION:select,update,insert
grant ACTION on databasename.tablename to 'username'@'hostname' ACTION:execute,alter routine 6、grant all on databasename,tablename to 'username'@'hostname'
每一个高层级的权限设置都会覆盖低层级的权限设置
globel>database>table>column
转自:LICORIL的个人博客 www.leifc.com (表示感谢)