Mysql数据库之用户授权

**前言**	
	在登录连接mysql的时候,通常使用root用户连接,但是如果我们想单独设置一个用户并且连接数据库后只能查看数据应该怎么做呢,这里就详细说明一下怎样给用户授权并且查看授权用户所对应的权限.

+++++++++++++++++++++++++++++
grant授权
授权就是添加用户给用户设置的相应权限,命令格式:

grant 权限列表 on 库名 to 用户名@"客户端地址" 
identified by "密码"      //授权用户密码
with grant option;  //可选项,让你添加的用户是否具备授权权限,可选项

举个例子
授权tom用户在本机登录对abc库具有完全权限,且具有授权权限:

grant all on abc to tom@"localhost" identified by "123qqq...A" with grant option;
//赋予授权权限后,使用此用户登录数据库可以创建用户并且赋予其他用户具备自身的权限.
//all 代表所有权限 localhost 代表本地登录

因此根据例子我们可以发现权限和登录方式可以有很多种:
权限列表:
all     //所有权限
usage   //无权限
select,update,insert   //个别权限
select,update(字段1,字段2,...)   //拥有查询权限和对个别字段具备修改权限
客户端地址:
%   //所有主机
192.168.2.%   //网段内所有主机
192.168.3.1         //指定只允许某一台主机
localhost         //数据库服务器本机

权限针对的库和表也可以有很多种:

*.*    //所有库所有表
库名.* //一个库
库名.表 //一张表
关于用户名授权时自定义,要有标识性,授权后存在mysql库的user表中.

应用示例:添加用户zhangsan,对所有库,表拥有完全权限,允许从任何客户端连接,密码123qqq…A,且具有授权权限.

grant all on *.* to zhangsan@"%" identified by "123qqq...A" with grant option;

第一次使用root用户登录数据库时,会有默认的四个库,其中mysql库为授权库记录授权信息,主要表有user表,db表,tables_priv表,columns_priv表,每个表中对应的主要内容如下:
user表 记录已有的授权用户及权限
db表 记录已有授权用户对数据库的访问权限
tables_priv表 记录已有授权用户对表的访问权限
columns_priv表 记录已有授权用户对字段的访问权限

查看表记录不仅可以获取用户权限,还可以通过更新记录,修改用户权限.
登录用户的相关命令

select user();          //显示登录用户名以及客户端地址
show grants;    //显示用户自身的访问权限
show grants for 用户名@"客户端地址";    //管理员查看已有授权用户权限
set password=password("密码");             //授权用户连接后修改连接密码
set password for 用户名@"客户端地址"=password("密码");   //管理员重置授权用户连接密码
drop user 用户名@"客户端地址";                 //删除授权用户(必须有管理员权限)``

撤销权限
命令格式:
revoke 权限列表 on 库名.表 from 用户名@“客户端地址”;

以上是对用户授权的一些基本使用命令

猜你喜欢

转载自blog.csdn.net/qq_45075198/article/details/100994486