MySQL的权限有哪些
1个回答
展开全部
MySQL的权限有哪些?
一.权限表
mysql数据库中的3个权限表:user
、db、
host
权限表的存取过程是:
1)先从user表中的host、
user、
password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证;
2)通过权限验证,进行权限分配时,按照useràdbàtables_privàcolumns_priv的顺序进行分配。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,
tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。
二.MySQL各种权限(共27个)
(以下操作都是以root身份登陆进行grant授权,以p1@localhost身份登陆执行各种命令。)
1.
usage
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。
mysql>
grant
usage
on
*.*
to
‘p1′@’localhost’
identified
by
‘123′;
该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。
2.
select
必须有select的权限,才可以使用select
table
mysql>
grant
select
on
pyt.*
to
‘p1′@’localhost’;
mysql>
select
*
from
shop;
3.
create
必须有create的权限,才可以使用create
table
mysql>
grant
create
on
pyt.*
to
‘p1′@’localhost’;
4.
create
routine
必须具有create
routine的权限,才可以使用{create
|alter|drop}
{procedure|function}
mysql>
grant
create
routine
on
pyt.*
to
‘p1′@’localhost’;
当授予create
routine时,自动授予EXECUTE,
ALTER
ROUTINE权限给它的创建者:
mysql>
show
grants
for
‘p1′@’localhost’;
+—————————————————————————+
Grants
for
p1@localhost
+————————————————————————–+
|
GRANT
USAGE
ON
*.*
TO
‘p1′@’localhost’
IDENTIFIED
BY
PASSWORD
‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′
|
|
GRANT
SELECT,
CREATE,
CREATE
ROUTINE
ON
`pyt`.*
TO
‘p1′@’localhost’|
|
GRANT
EXECUTE,
ALTER
ROUTINE
ON
PROCEDURE
`pyt`.`pro_shop1`
TO
‘p1′@’localhost’
|
+————————————————————————————-+
5.
create
temporary
tables(注意这里是tabl
一.权限表
mysql数据库中的3个权限表:user
、db、
host
权限表的存取过程是:
1)先从user表中的host、
user、
password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证;
2)通过权限验证,进行权限分配时,按照useràdbàtables_privàcolumns_priv的顺序进行分配。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,
tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。
二.MySQL各种权限(共27个)
(以下操作都是以root身份登陆进行grant授权,以p1@localhost身份登陆执行各种命令。)
1.
usage
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。
mysql>
grant
usage
on
*.*
to
‘p1′@’localhost’
identified
by
‘123′;
该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。
2.
select
必须有select的权限,才可以使用select
table
mysql>
grant
select
on
pyt.*
to
‘p1′@’localhost’;
mysql>
select
*
from
shop;
3.
create
必须有create的权限,才可以使用create
table
mysql>
grant
create
on
pyt.*
to
‘p1′@’localhost’;
4.
create
routine
必须具有create
routine的权限,才可以使用{create
|alter|drop}
{procedure|function}
mysql>
grant
create
routine
on
pyt.*
to
‘p1′@’localhost’;
当授予create
routine时,自动授予EXECUTE,
ALTER
ROUTINE权限给它的创建者:
mysql>
show
grants
for
‘p1′@’localhost’;
+—————————————————————————+
Grants
for
p1@localhost
+————————————————————————–+
|
GRANT
USAGE
ON
*.*
TO
‘p1′@’localhost’
IDENTIFIED
BY
PASSWORD
‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′
|
|
GRANT
SELECT,
CREATE,
CREATE
ROUTINE
ON
`pyt`.*
TO
‘p1′@’localhost’|
|
GRANT
EXECUTE,
ALTER
ROUTINE
ON
PROCEDURE
`pyt`.`pro_shop1`
TO
‘p1′@’localhost’
|
+————————————————————————————-+
5.
create
temporary
tables(注意这里是tabl
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询