MySQL操作基础之DCL语句,用户权限管理
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的 语句关键字包括grant、revoke 等。
DCL 语句主要是DBA 用来管理系统中的对象权限时所使用的,一般的开发人员很少使用。 1:创建用户CREATE USER
示例:创建只能本地登录(localhost)的账号zhangsan,密码为mypassCREATE USER "zhangsan"@"localhost" IDENTIFIED BY "mypass";
2: GRANT给用户授权
注:mysql8.0以前的版本可以使用grant在授权的时候隐式的创建用户,8.0以后已经不支持,所以必须先创建用户,然后再授权
创建用户并授权,语法格式(8.0以前版本):GRANT [权限] ON [数据库.数据表] TO [用户名] @host IDENTIFIED BY [‘密码’] [WITH GRANT OPTION(可选参数)]; [权限]: select,insert ,update,delete,drop,create等,all(所有操作) [数据库.数据表]:testDatebase.* (testDatebase中所有表),testDatebase.myTable (testDatebase中的myTable表),*(所有数据库) host:localhost(本地登录),12.32.123.54(仅限此IP可登录),%(任何地方都可以登录) with gran option:表示该用户可以给其它用户赋予权限,但不可能超过该用户已有的权限。比如a用户有select,insert权限,也可给其它用户赋权,但它不可能给其它用户赋delete权限,除了select,insert以外的都不能。
示例:
8.0以前版本创建用户授权一步到位。GRANT all ON testDatebase.myTable TO "zhangsan"@localhost IDENTIFIED BY "mypass; #创建用户zhangsan,密码mypass,对于数据库testDatebase的myTable表,授予所有权限(all),仅限本地登录
8.0以后的版本,创建用户后,再进行授权操作。grant all privileges on wordpress.* to "userwordpress"@"%"; #userwordpress用户在wordpress所有表中有权限,可在任何地方登录使用。grant select on testDatabase.myTable to "zhangsan"@"localhost"; #zhangsan用户在testDatabase的myTable表中只有select权限,仅在本地登录。 3: REVOKE给用户撤销权限
格式:REVOKE [权限] ON [数据库.数据表] FROM[用户名] @host;
示例:revoke all privileges on testDatabase.* from "zhangsan"@"%"; #撤销zhangsan在testDatabase数据库的所有权限revoke insert on testDatabase.* from "zhangsan"@localhost; #撤销zhangsan在testDatabase数据库的insert权限 4:查看权限命令
有两种方式查看。
第一种方式:show grants for "userwordpress"; #查看用户userwordpress的权限mysql > show grants for "userwordpress"; +--------------------------------------------------------------+ | Grants for userwordpress@% | +--------------------------------------------------------------+ | GRANT USAGE ON *.* TO `userwordpress`@`%` | | GRANT ALL PRIVILEGES ON `wordpress`.* TO `userwordpress`@`%` | +--------------------------------------------------------------+ 2 rows in set Time: 0.007s
第二种方式:select * from mysql.user where user="userwordpress"G;
g 相当于’;’
G使每个字段打印到单独的行,也有’;’的作用
只能查出哪个数据库的哪张表的权限,如查userwordpress在mysql数据库的user表的权限,显示都是N(no),没有权限,如果查root用户就都是Y(yes)选择了。5:修改用户密码信息和host
修改密码的两种方式:
1)Alter userAlter user "test1"@"localhost" identified by "新密码";
2)set passwordset password for "zhangsan"@"localhost"="1234567"
3)8.0以前版本grant,8.0以后版本无法使用grant all privileges on testDatabase.* to "zhangsan"@localhost identified by "newpassword";
修改host,访问IP:update user set Host="%" where user="zhangsan"; #修改host为"%",任何IP都可访问update user set Host="123.123.123.123" where user="zhangsan"; #修改host为"%",IP:123.123.123.123可访问 6:删除用户
drop user "zhangsan"@"%" #删除zhangsan