第1关:用户1
任务描述
1.在本地创建用户u1@localhost,密码为123.
2.将u1@localhost更名为user1@localhost.
3.在msyql.user表中查看所有用户的用户名(user)。
USE petstore;
create user u1@localhost identified by '123'; #创建用户
rename user u1@localhost to user1@localhost; #改名
select user from mysql.user; #查看所有用户的用户名
######### Begin #########
######### End #########
####相关知识#####
1、添加和删除用户:
使用CREATE USER语法添加一个或多个用户,并设置相应的密码。
语法格式:
CREATE USER 用户名 【IDENTIFIED BY[PASSWORD]'密码]
用户名的格式为:user_name@host_name。其中user_name为用户名.host name为主机名
2、删除用户语法格式:
DROP USER user
DROP USER语句用于删除一个或多个MySQL账户,并取消其权限。要使
用DROP USER,必须拥有mySql数据库的全局CREATEUSER权限或
DELETE权限。
3、使用RENAMEUSER语句来修改一个已经存在的SQL用户的名字。
语法格式:
RENAME USER old user TO new user
若要将命令立即生效,可用命令:
Flush privileges;
4、修改某个用户的登录密码,可以使用SET PASSWORD语句。
语法格式:
SET PASSWORD[FOR user]=PASSWORD('newpassword')
5.在msyql.user表中查看所有用户的用户名(user)
select user from mysql.user;
第2关:用户2
任务描述
1.在本地创建用户u1,不设密码。
2.将u1密码设为abc。
3.删除用户u1。
4.在msyql.user表中查看所有用户的用户名(user)。
USE petstore;
create user u1@localhost; #创建用户
set password for u1@localhost=password('abc'); #设置密码
drop user u1@localhost; #删除用户
select user from mysql.user; #查看所有用户的用户名
######### Begin #########
######### End #########
####相关知识####
1、添加和删除用户:
使用CREATE USER语法添加一个或多个用户,并设置相应的密码。
语法格式:
CREATE USER 用户名 【IDENTIFIED BY[PASSWORD]'密码]
用户名的格式为:user_name@host_name。其中user_name为用户名.host name为主机名
2、删除用户语法格式:
DROP USER user
DROP USER语句用于删除一个或多个MySQL账户,并取消其权限。要使
用DROP USER,必须拥有mySql数据库的全局CREATEUSER权限或
DELETE权限。
3、使用RENAMEUSER语句来修改一个已经存在的SQL用户的名字。
语法格式:
RENAME USER old user TO new user
若要将命令立即生效,可用命令:
Flush privileges;
4、修改某个用户的登录密码,可以使用SET PASSWORD语句。
语法格式:
SET PASSWORD[FOR user]=PASSWORD('newpassword')
5.在msyql.user表中查看所有用户的用户名(user)
select user from mysql.user;
第3关:授权1
任务描述
1.赋予用户u1在account表上的查询权限,并允许u1将这个权限赋予其他用户。
2.在mysql.tables_priv表中查看u1的表权限table_priv。
USE petstore;
grant select #赋予用户u1在account表上的查询权限
on account
to u1@localhost
with grant option; #允许u1将这个权限赋予其他用户
select table_priv from mysql.tables_priv; #查看u1的表权限table_priv
######### Begin #########
######### End #########
#####相关知识#######
1、授予权限
给用户授予权限可以使用GRANT语句。使用SHOW GRANTS语句
可以查看当前账户拥有什么权限。
GRANT语法格式:
GRANT权限1[(列名列表1)][,权限2[(列名列表2)]]…
ON[目标]{表名|*|*.*|库名.*}
TO用户1[IDENTIFIEDBY[PASSWORD]'密码1']
[,用户2[IDENTIFIED BY[PASSWORD]‘密码2']].….
[WITH权限限制1[权限限制2]..]
2.回收权限
用来回收某些特定的权限语法格式:
REVOKE 权限1[(列名列表1)][,权限2[(列名列表2)]]…
ON{表名|*|**|库名.*}
FROM 用户1[,用户2]..
回收所有该用户的权限语法格式:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user
(1)授予表权限
授予表权限时,权限可以是以下值。
1)SELECT:授予用户使用SELECT语句访问特定表(或视图)的权力。对于视图,
用户必须对视图中指定的每个表(或视图)都有SELECT权限。
2)INSERT:授予用户使用INSERT语句向一个特定表中添加行的权力。
3)DELETE:授予用户使用DELETE语句向一个特定表中删除行的权力。
4)UPDATE:授予用户使用UPDATE语句修改特定表中值的权力。
5)REFERENCES:授予用户创建一个外键来参照特定的表的权力。
6)CREATE:授予用户使用特定的名字创建一个表的权力。
7)ALTER:授予用户使用ALTER TABLB语句修改表的权力。
8)INDEX:授予用户在表上定义索引的权力。
9)DROP:授予用户删除表的权力。
10)ALL或ALL PRIVILEGES:表示所有权限。
在授予表权限时,ON关键字后面跟表名,指定授予权限的为表名或视图名。
(2)授予数据库权限
表权限适用于一个特定的表,MySQL还支持针对整个数据库的权限。例如,在一个
特定的数据库中创建表和视图的权限。
授予数据库权限时,权限可以是以下值。
1)SELECT:授予用户使用SELECT语句访问特定数据库中所有表和视图的权力。
2)INSERT:授予用户使用INSERT语句向特定数据库所有表中添加行的权力。
3)DELETE:授予用户使用DELETE语句在特定数据库所有表中删除行的权力。
4)UPDATE:授予用户使用UPDATE语句更新特定数据库所有表中值的权力。
5)REFERENCES:授予用户创建指向特定数据库中的表外键的权力。
6)CREATE:授予用户使用CREATE TABLE语句在特定数据库中创建新表的权力。
7)ALTER:授予用户使用ALTERTABLE语句修改特定数据库中所有表的结构的权力。
8)INDEX:授予用户在特定数据库中的所有表上定义和删除索引的权力。
9)DROP:授予用户删除特定数据库中所有表和视图的权力。
10) CREATETEMPORARY TABLES:授予用户在特定数据库中创建临时表的权力。
11)CREATE VIEW:授予用户在特定数据库中创建新视图的权力。
12)SHOW VIEW:授予用户查看特定数据库中已有视图的视图定义的权力。
13)CREATEROUTINE:授予用户为特定数据库创建存储过程和存储函数的权力。
14) ALTERROUTINE:授予用户更新和删除数据库中已有存储过程和存储函数的
权力。
15)EXECUTE ROUTINE:授予用户调用特定数据库的存储过程和存储函数的权力。
16)LOCK TABLES:授予用户锁定特定数据库中已有表的权力。
17)ALL或ALLPRIVILEGES:表示以上所有权限。
在GRANT语法格式中,授予数据库权限时ON关键字后面跟*和“库名.*”。*表示
当前数据库中的所有表;“库名.*”表示某个数据库中的所有表。
第4关:授权+回收权限
任务描述
1.赋予用户u1@localhost在petstore数据库上的所有权限,并允许u1@localhost每小时最多查询(max_queries_per_hour)10次。
2.收回u1@localhost在所有表上的查询权限。
3.在mysql.user表中查看u1的所有信息。
USE petstore;
grant all #赋予用户u1@localhost在petstore数据库上的所有权限
on petstore.*
to u1@localhost
with max_queries_per_hour 10; #允许u1@localhost每小时最多查询
revoke select #收回u1@localhost在所有表上的查询权限
on petstore.*
from u1@localhost;
select * from mysql.db where user='u1'; #在mysql.user表中查看u1的所有信息
######### Begin #########
######### End #########
#####相关知识#######
1、授予权限
给用户授予权限可以使用GRANT语句。使用SHOW GRANTS语句
可以查看当前账户拥有什么权限。
GRANT语法格式:
GRANT权限1[(列名列表1)][,权限2[(列名列表2)]]…
ON[目标]{表名|*|*.*|库名.*}
TO用户1[IDENTIFIEDBY[PASSWORD]'密码1']
[,用户2[IDENTIFIED BY[PASSWORD]‘密码2']].….
[WITH权限限制1[权限限制2]..]
2.回收权限
用来回收某些特定的权限语法格式:
REVOKE 权限1[(列名列表1)][,权限2[(列名列表2)]]…
ON{表名|*|**|库名.*}
FROM 用户1[,用户2]..
回收所有该用户的权限语法格式:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user
(1)授予表权限
授予表权限时,权限可以是以下值。
1)SELECT:授予用户使用SELECT语句访问特定表(或视图)的权力。对于视图,
用户必须对视图中指定的每个表(或视图)都有SELECT权限。
2)INSERT:授予用户使用INSERT语句向一个特定表中添加行的权力。
3)DELETE:授予用户使用DELETE语句向一个特定表中删除行的权力。
4)UPDATE:授予用户使用UPDATE语句修改特定表中值的权力。
5)REFERENCES:授予用户创建一个外键来参照特定的表的权力。
6)CREATE:授予用户使用特定的名字创建一个表的权力。
7)ALTER:授予用户使用ALTER TABLB语句修改表的权力。
8)INDEX:授予用户在表上定义索引的权力。
9)DROP:授予用户删除表的权力。
10)ALL或ALL PRIVILEGES:表示所有权限。
在授予表权限时,ON关键字后面跟表名,指定授予权限的为表名或视图名。
(2)授予数据库权限
表权限适用于一个特定的表,MySQL还支持针对整个数据库的权限。例如,在一个
特定的数据库中创建表和视图的权限。
授予数据库权限时,权限可以是以下值。
1)SELECT:授予用户使用SELECT语句访问特定数据库中所有表和视图的权力。
2)INSERT:授予用户使用INSERT语句向特定数据库所有表中添加行的权力。
3)DELETE:授予用户使用DELETE语句在特定数据库所有表中删除行的权力。
4)UPDATE:授予用户使用UPDATE语句更新特定数据库所有表中值的权力。
5)REFERENCES:授予用户创建指向特定数据库中的表外键的权力。
6)CREATE:授予用户使用CREATE TABLE语句在特定数据库中创建新表的权力。
7)ALTER:授予用户使用ALTERTABLE语句修改特定数据库中所有表的结构的权力。
8)INDEX:授予用户在特定数据库中的所有表上定义和删除索引的权力。
9)DROP:授予用户删除特定数据库中所有表和视图的权力。
10) CREATETEMPORARY TABLES:授予用户在特定数据库中创建临时表的权力。
11)CREATE VIEW:授予用户在特定数据库中创建新视图的权力。
12)SHOW VIEW:授予用户查看特定数据库中已有视图的视图定义的权力。
13)CREATEROUTINE:授予用户为特定数据库创建存储过程和存储函数的权力。
14) ALTERROUTINE:授予用户更新和删除数据库中已有存储过程和存储函数的
权力。
15)EXECUTE ROUTINE:授予用户调用特定数据库的存储过程和存储函数的权力。
16)LOCK TABLES:授予用户锁定特定数据库中已有表的权力。
17)ALL或ALLPRIVILEGES:表示以上所有权限。
在GRANT语法格式中,授予数据库权限时ON关键字后面跟*和“库名.*”。*表示
当前数据库中的所有表;“库名.*”表示某个数据库中的所有表。