mysql8.0权限认证2

目录

 

一、系统权限表介绍

user和db权限表结构

User权限表结构中的特殊字段

Tables_priv和columns_priv权限表结构

Tables_priv和columns_priv权限值

procs_priv权限表结构

系统权限表字段长度限制表

二、权限认证中的大小写敏感问题

三、mysql用户授权

查看用户授权信息

MySQL的授权用户由两部分组成:用户名和登录主机名

mySQL修改权限的生效 

 四、mysql用户管理

创建MySQL用户

 删除MySQL用户

五、mysql用户资源管理

 设置/修改用户资源限制

 通过执行create user/alter user设置/修改用户的资源限制。

 取消某项资源限制就是把原先的值修改成0

 mysql用户密码管理

 mysql用户密码过期策略

 mysql用户lock


一、系统权限表介绍

  • user和db权限表结构

      

  • User权限表结构中的特殊字段

     

  • Tables_priv和columns_priv权限表结构

      

  •  Tables_priv和columns_priv权限值

  • procs_priv权限表结构

        Routine_type是枚举类型,代表是存储过程还是函数;Timestamp和grantor两个字段暂时没用

       

  • 系统权限表字段长度限制表

       

二、权限认证中的大小写敏感问题

       字段 user,password,authencation_string,db,table_name大小写敏感 ;

       字段 host,column_name,routine_name大小写不敏感。

三、mysql用户授权

  • 查看用户授权信息

  • 查看用户已授权信息

       show grants for root@localhost;

  • 查看用户的其他非授权信息

       show create user root@localhost;

  •  MySQL的授权用户由两部分组成:用户名和登录主机名

  • 表达用户的语法为‘user_name’@‘host_name’;
  • 单引号不是必须,但如果其中包含特殊字符则是必须的
  • ‘’@‘localhost’代表匿名登录的用户;
  • Host_name可以使主机名或者ipv4/ipv6的地址。Localhost代表本机,127.0.0.1代表ipv4的 本机地址,::1代表ipv6的本机地址;
  • Host_name字段允许使用%和_两个匹配字符,比如’%’代表所有主机,’%.mysql.com’代表 来自mysql.com这个域名下的所有主机,‘192.168.1.%’代表所有来自192.168.1网段的主机。

      注意:要先关闭防火墙再链接。

查看防火墙状态:firewall-cmd --state
停止firewall:systemctl stop firewalld.service
禁止firewall开机启动:systemctl disable firewalld.service 
  • mySQL修改权限的生效 

  • 执行Grant,revoke,set password,rename user命令修改权限之后,MySQL会自动 将修改后的权限信息同步加载到系统内存中;
  • 如果执行insert/update/delete操作上述的系统权限表之后,则必须再执行刷 新权限命令才能同步到系统内存中,刷新权限命令包括:flush privileges/mysqladmin flush-privileges/mysqladmin reload;
  • 如果是修改tables和columns级别的权限,则客户端的下次操作新权限就会生效;
  • 如果是修改database级别的权限,则新权限在客户端执行use database命令后生效;
  • 如果是修改global级别的权限,则需要重新创建连接新权限才能生效;
  • --skip-grant-tables可以跳过所有系统权限表而允许所有用户登录,只在特殊情况下暂时使用;

 四、mysql用户管理

  • 创建MySQL用户

有两种方式创建MySQL授权用户

  • 执行create user/grant命令(推荐方式)

        create user 'custom'@'localhost' identified by '132456';

  • 通过insert语句直接操作MySQL系统权限表
  •  删除MySQL用户

通过执行drop user命令删除MySQL用户

drop user 'jeffrey'@'localhost';

五、mysql用户资源管理

  • 通过设置全局变量max_user_connections可以限制所有用户在同一时 间连接MySQL实例的数量,但此参数无法对每个用户区别对待,所以 MySQL提供了对每个用户的资源限制管理;
  • MAX_QUERIES_PER_HOUR:一个用户在一个小时内可以执行查询的次 数(基本包含所有语句);
  • MAX_UPDATES_PER_HOUR:一个用户在一个小时内可以执行修改的次 数(仅包含修改数据库或表的语句);
  • MAX_CONNECTIONS_PER_HOUR:一个用户在一个小时内可以连接 MySQL的时间;
  • MAX_USER_CONNECTIONS:一个用户可以在同一时间连接MySQL实例 的数量;
  • 从5.0.3版本开始,对用户‘user’@‘%.example.com’的资源限制是指所有 通过example.com域名主机连接user用户的连接,而不是分别指从 host1.example.com和host2.example.com主机过来的连接。
  •  设置/修改用户资源限制

通过执行create user/alter user设置/修改用户的资源限制。

  • 设置:
create user 'francis'@'localhost' identified by 'frank'

WITH MAX_QUERIES_PER_HOUR 20

MAX_UPDATES_PER_HOUR 10

MAX_CONNECTIONS_PER_HOUR 5

MAX_USER_CONNECTIONS 2;
  • 修改:
alter user 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;

取消某项资源限制就是把原先的值修改成0

alter user 'francis'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 0;

当针对某个用户的max_user_connections非0时,则忽略全局系统参数 max_user_connections,反之则全局系统参数生效。

  •  mysql用户密码管理

  • 执行create user创建用户和密码

       create user 'jeffrey'@'localhost' identified by 'mypass';

  • 修改用户密码的方式:

       alter user 'jeffrey'@'localhost' identified by 'mypass';

  • 修改用户自身密码的方式:

        alter user user() identified by 'mypass';

  • mysql用户密码过期策略

  • 设置系统参数default_password_lifetime作用于所有的用户账户

        default_password_lifetime=180 设置180天过期

        default_password_lifetime=0 设置密码不过期

  • 如果为每个用户设置了密码过期策略,则会覆盖上述系统参数

       ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

       ALTER USER ‘jeffrey’@‘localhost’ PASSWORD EXPIRE NEVER; 密码不过期

       ALTER USER ‘jeffrey’@‘localhost’ PASSWORD EXPIRE DEFAULT; 默认过期策略

  • 手动强制某个用户密码过期

       ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE;

  •  mysql用户lock

  • 通过执行create user/alter user命令中带account lock/unlock子句设 置用户的lock状态

       Create user语句默认的用户是unlock状态

       create user abc2@localhost identified by 'mysql' account lock;

  • Alter user语句默认不会修改用户的lock/unlock状态

       alter user 'mysql.sys'@localhost account lock;

       alter user 'mysql.sys'@localhost account unlock;

  • 当客户端使用lock状态的用户登录MySQL时,会收到如此报错

       Access denied for user 'user_name'@'host_name'.

       Account is locked.

发布了28 篇原创文章 · 获赞 5 · 访问量 1189

猜你喜欢

转载自blog.csdn.net/weixin_40391011/article/details/103951522