mysql的权限一直都都是很关心的重点,我知道的也只是很少的一部分,对于每个数据库我习惯创建一个一个用户,该用户只对自己从属的数据库产生进行操作,在一部分的程度上可以保护自己的数据库,
比如我有一个数据库叫做dream,
create user dream@localhost indentified by 'dream';//创建用户
revoke all on *.* from dream@localhost;//删除权限
flush privileges;//刷新日志:应用在没有登录数据库的时候方法如下-----,如果登入了数据库,直接写就可以了
----------------------------------------------------------************************************----------------------------------------------------
shell> mysqladmin [options] command [command-options] [command [command-options]] ...
mysqladmin支持下面的命令:
· create db_name
创建一个名为db_name的新数据库。
· debug
告诉服务器向错误日志写入调试信息。
· drop db_name
删除名为db_nam的数据库和所有表。
· extended-status
显示服务器状态变量及其值。
· flush-hosts
刷新主机缓存中的所有信息。
· flush-logs
刷新所有日志。
· flush-privileges
重载授权表(类似reload)。
· flush-status
清除状态变量。
· flush-tables
刷新所有表。
· flush-threads
刷新线程缓存。
· kill id,id,...
杀掉服务器线程。
· old-password new-password
-----------------------------------------------------------************************************------------------------------------------------------------------
grant select,index,select,insert,drop,alter,update on dream.* to dream@localhost identified by 'dream';//赋予权限
对于GRANT和REVOKE语句,priv_type可以被指定为以下任何一种:
权限 | 意义 |
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 |
drop user dream@localhost//删除用户
revoke select on dream.* from dream@localhost//剥夺权限
我们有的时候会写revoke .. on *.*,但是我最近发现,这条语句不起作用,只有剥夺用户指定数据库的权限,才会起作用