实战mysql权限管理
注:如果你认为你的数据不重要,可以不用往看下。
root,它具有至高无上的权限,不是任何情况都要用root!!!
状况1:给一个菜鸟root权限。
状况2:给业务开发人员以root权限。
状况3:给负责单个库的DBA以root权限。
可能你没有遇到到这三种状况,但事故总会发出,一旦把数据弄丢,把数据库down掉,为时已晚,所以权限的设置是必须的!!!
mysql中的grant语句可以做到我们想要的!
权限 |
意义 |
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 |
允许授予权限 |
第一种状况解决:只需给他(common_user)增删改查数据库的权限。
grant select, insert, update, delete on testdb.* to common_user@'%"
第二种状况解决:给他(produce_user)创建表,索引,视图,存储过程,函数等权限。
grant select, insert, update, delete,CREATE TEMPORARY TABLE,CREATE VIEW,ALTER ROUTINE,CREATE ROUTINE,EXECUTE,INDEX,SHOW DATABASES on testdb.* to produce_user@'%'
第三种状况解决:给他(dba)单个库所有的权限
grant all privileges on testdb to dba@'localhost'(这里localhost说明只能用于本地连接)
加完了权限,不记得谁有什么权限肿么办?要用个本子记下么?
你应该早就发同在mysql中有一个自带的库"mysql",库里有个表”user“,没错,这个表里记着所有的用户和他们的权限!!!