mysql用户认证、grant权限、grant创建用户、revoke废除权限

用户安全:

mysql 的认证方式 用户名、密码、登录主机

客户端:要通过什么用户通过什么密码登录服务器

          用户名   密码  要登录的服务器的IP地址  服务器提供的mysql服务的端口号

服务端:验证客户端的登录信息是否在自己的用户表中

         用户名  密码   客户端的登录主机

权限:

授权(级别):

  • 系统权限---------mysql.user
  • 针对某一个数据库-----mysql.db
  • 某一个数据库中的某一个表-------mysql.table_priv
  • 某一个数据库中某一个表中的某一列-------mysql.columns_priv

grant :

1、u1可以访问所有数据库的所有表(select)

grant select on table *.* to 'u1'@'localhost'; 
select * from mysql.user;

2、u1可以访问test数据库的所有表(insert)

grant insert on table test.* to 'u1'@'localhost';
 select * from mysql.db;

3、u1可以访问test数据库里面的t1 表(所有权限)

grant all on table test.t1 to 'u1'@'localhost';
 select * from mysql.tables_priv;

4、u1可以访问test数据库中t1 表的id列

grant insert(id) on table test.t1 to 'u1'@'localhost'; 
select * from mysql.columns_priv;

权限的传递:

with grant option

通过在grant语句的最后使用该子句,就允许被授权的用户把得到的权限继续授权给其他用户。

grant all on *.* to 'root'@'%' with grant option

grant建立用户:

        1、如果grant的用户不存在,并且加上密码,会自动创建用户。

grant all on *.* to 'u12'@'%' identified by '123456' with grant option ;

       2、如果不加密码进行强制建立用户,则修改会话级别参数

show variables like 'sql_mode';
 set @@session.sql_mode='......';

去掉sql_mode里面的no_auto_create_user这个参数即可。(为了安全级别还是别去掉这个参数)

revoke:

(废除用户权限)

先查看用户有哪些权限,再废除

revoke select on test from 'u1'@'%';

废除用户在所有级别上的权限

revoke all privileges,grant option from user [,user]......

猜你喜欢

转载自blog.csdn.net/qq_42935487/article/details/88830523