吃饭的时候吃饭,睡觉的时候睡觉,工作的时候工作,学习的时候学习......
❝ MySQL用户以及权限管理 ❞
作者:彭新 日期:2014-05-12 分类:MySQL 点击: 来源:www.wo81.com

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !

刷新权限:使用户修改立即生效
FLUSH PRIVILEGES;
注意:如下所有操作执行后紧跟着再执行FLUSH PRIVILEGES;才能立即生效。

用户管理

1、创建用户

CREATE USER 'testuser'@'localhost' IDENTIFIED BY '123';
注:用户名testuser,密码123,此时用户没有任何权限,只能连接到数据库。
如果想创建一个没有密码的用户,请使用如下语句:
CREATE USER 'testuser'@'localhost';

2、删除用户

drop user testuser;

3、用户重命名

RENAME USER 'testuser'@'localhost' TO 'newname'@'localhost';

用户授权与收权

授权:grant 权限 on 对象 to 用户@host identified by "密码";
收权:revoke 权限 on 对象 from 用户
授权/收权示例
授予用户testuser在数据库testdb上的所有权限(不包含WITH GRANT OPTION)
grant ALL PRIVILEGES on testdb.* to testuser@'localhost' identified by "123";
收回该权限:
revoke ALL PRIVILEGES on testdb.* from testuser@'localhost';

举一反三

1、“权限”位置:可以用如下任一权限代替,如果有多个权限,可用逗号分隔
GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'testuser'@'localhost';
可用权限列表:
ALL PRIVILEGES:影响除WITH GRANT OPTION之外的所有权限
ALTER:影响ALTER TABLE命令的使用
ALTER ROUTINE:影响创建存储例程的能力
CREATE:影响CREATE TABLE命令的使用
CREATE ROUTINE:影响更改和弃用存储例程的能力
CREATE TEMPORARY TABLES:影响CREATE TEMPORARY TABLE命令的使用
CREATE USER:影响创建、弃用;重命名和撤销用户权限的能力
CREATE VIEW:影响CREATE VIEW命令的使用
DELETE:影响DELETE命令的使用
DROP:影响DROP TABLE命令的使用
EXECUTE:影响用户运行存储过程的能力
EVENT:影响执行事件的能力(从MySQL5.1.6开始)
FILE:影响SELECT INTO OUTFILE和LOAD DATA INFILE的使用
GRANT OPTION:影响用户委派权限的能力
INDEX:影响CREATE INDEX和DROP INDEX命令的使用
INSERT:影响INSERT命令的使用
LOCK TABLES:影响LOCK TABLES命令的使用
PROCESS:影响SHOW PROCESSLIST命令的使用
REFERENCES:未来MySQL特性的占位符
RELOAD:影响FLUSH命令集的使用
REPLICATION CLIENT:影响用户查询从服务器和主服务器位置的能力
REPLICATION SLAVE:复制从服务器所需的权限
SELECT:影响SELECT命令的使用
SHOW DATABASES:影响SHOW DATABASES命令的使用
SHOW VIEW:影响SHOW CREATE VIEW命令的使用
SHUTDOWN:影响SHUTDOWN命令的使用
SUPER:影响管理员级命令的使用,如CHANGE、MASTER、KILL thread、mysqladmin debug、PURGE MASTER LOGS和SET GLOBAL
TRIGGER:影响执行触发器的能力(从MySQL5.1.6开始)
UPDATE:影响UPDATE命令的使用
USAGE:只连接,不授予权限
 
2、“对象”位置
*.*   所有数据库的所有对象
testdb.*  数据库testdb里的所有对象
testdb.table1  数据库testdb里的数据表table1
 
3、“@host”位置:@后面可以做访问控制,不同位置可以使用不同的密码!
只允许本地访问:@'localhost'
允许任何主机访问:@'%'
只允许192.168.1.100访问:@'192.168.1.100'
只允许192.168.1.0/24 网段所有主机访问:@'192.168.1.%'
如何修改host位?修改的方法就是用roont用户更新mysql数据库里的user表。
查询用户:select host,user from mysql.user where user='testuser';
A)如果能查询到,并且这条记录也需要修改
示例:将host从localhost更新为%(让所有主机都能访问)
update mysql.user set host='%' where user='testuser' and host='localhost';
B)如果没有数据(也就是说没有授权),那么直接grant授权即可。
示例:让用户testuser在所有主机都能访问testdb
grant ALL PRIVILEGES on testdb.* to testuser@'%' identified by "123";
 
4、让被授权的用户,也可以将这些权限授予其他用户:使用WITH GRANT OPTION
示例:授予testuser所有权限,并且testuser也可以将这些权限授予其他用户
grant ALL PRIVILEGES on testdb.* to testuser@'%' identified by "123" WITH GRANT OPTION 
 
5、其它权限收回方法
删除mysql.user表中对应的数据,然后重新授权。
delete from mysql.user where user='testuser';
grant ALL PRIVILEGES on testdb.* to testuser@'%' identified by "123";

本文链接:MySQL用户以及权限管理

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !