注:如果你认为你的数据不重要,可以不用往看下。
root,它具有至高无上的权限,不是任何情况都要用root!!!
查看MySQL用户权限:
show grants for 你的用户
比如:
show grants for root@'localhost';
SHOW GRANTS FOR smcguest@'%';
展示:
GRANT USAGE ON *.* TO 'smcguest'@'%' IDENTIFIED BY PASSWORD '*342D99DBE27FC24269DC8027B182F53CE4D2D820'
GRANT ALL PRIVILEGES ON `yoyo`.* TO 'smcguest'@'%' WITH GRANT OPTION
状况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“,没错,这个表里记着所有的用户和他们的权限!!!