一、mysql权限详解
1、权限组成结构:
用户:权限的主体,一个用户拥有自己的用户名和密码,并拥有能够操作的权限;
操作权限:限制一个用户能够做什么事情,在MySQL中,操作权限可以配置到全局/数据库/表/列上;
-------------------------------------------------------------------
2、权限的分布:
使用Navicat工具操作:
3、权限分布:针对不同的对象能够设置哪些权限;
全局: 针对于所有的数据库都有效.
数据库:只针对于当前数据库有效,其他数据库无效.
表权限:'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
列权限:'Select', 'Insert', 'Update', 'References'
过程权限:'Execute', 'Alter Routine', 'Grant'
*references:操作外键
--------------------------------------------------------
4、用户表中介绍
--------------------------------------------------------
MySQL中权限的设置也是存储在数据库中的:
mysql.user:用户表,包括用户名,密码,主机,全局权限,性能限制;
mysql.db:数据库权限设置;
mysql.table_priv:表权限设置;
mysql.column_priv:列权限设置;
二、权限命令
权限相关命令:
MySQL中用于赋权限的命令是GRANT,语法为:
完整语法:
GRANT 权限 (columns)
ON 数据库对象
TO 用户 IDENTIFIED BY "密码"
WITH GRANT OPTION
-------------------------------------------------------------------
三种具体的语法:
1.给一个存在用户赋予权限:
语法1:GRANT 权限 (columns) ON 数据库对象 TO 用户:
赋予choi账户:SELECT和INSERT权限.
GRANT select,insert ON *.* TO choi@localhost;
2.创建用户,设置密码,赋予权限:
语法2:GRANT 权限 (columns) ON 数据库对象 TO 用户 IDENTIFIED BY "密码"
3.创建lucy用户:
GRANT ALL ON *.* TO lucy@localhost IDENTIFIED BY '1234';
4.创建用户,设置密码,赋予权限,并且该用户可以继续授权给其他用户:
语法3:GRANT 权限 (columns) ON 数据库对象 TO 用户 IDENTIFIED BY "密码" WITH GRANT OPTION
三、授权示例
GRANT ALL PRIVILEGES ON *.* TO choi@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;
创建一个超级管理员,用户名为choi,密码为1234,只能在localhost登陆;可以给别人授权;
其中:
1,ALL PRIVILEGES即代表所有权限;
2,*.*:所有数据库对象。普通格式为db.table,比如test.*;
3,will@'localhost':admin用户,只能在本机访问。
①用户账户包括user@host;
②host为
%:从任意地址访问;
10.250.7.%:只能从指定网段访问;
192.168.1.2:只能从某个IP访问;
4,WITH GRANT OPTION:是否允许用户继续授权(注意,这个用户能够授权只能是该用户的权限子集)
5,注意,在授权操作之后,使用flush privileges命令刷新权限;
四、其他相关权限操作
查看当前用户的权限:
show grants;
查看特定用户的权限:
show grants for root@localhost
--------------------------------------------------------------------------
使用REVOKE命令回收对用户的授权:
REVOKE 权限 ON 数据库对象 FROM 用户;
如:赋予will用户所有的权限之后,再回收用户will所有的权限.
赋予权限:GRANT all ON *.* TO will@'%';
回收权限:REVOKE all ON *.* FROM will@'%';
注意:使用REVOKE撤销全部权限,操作者必须拥有MySQLl数据库的全局CREATE USER权限或UPDATE权限;
--------------------------------------------------------------------------
删除用户:DROP USER 用户名称
注意,user必须包括user@host;
如:DROP USER will@'%';