zoukankan      html  css  js  c++  java
  • Mysql—用户表详解(mysql.user)

    MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限,而普通用户拥有指定的权限。

    MySQL是通过权限表来控制用户对数据库访问的,权限表存放在mysql数据库中,主要的权限表有以下几个:user,db,host,table_priv,columns_priv和procs_priv,先带你了解的是user表。

    通常用户信息、修改用户的密码、删除用户及分配权限等就是在mysql数据库的user表中。

    用户列(用户连接MySQL数据库需要输入的信息)

    Host:主机名,双主键之一,值为%时表示匹配所有主机。User:用户名,双主键之一。Password:密码名。

    Host User Password
    % domain_check *55B565DA3839E5955A68EA96EB735
    localhost domain_check *55B565DA3839E5955A68EA96EB735
    127.0.0.1 domain_check *55B565DA3839E5955A68EA96EB735
    126.26.98.25 domain_check *55B565DA3839E5955A68EA96EB735
    localhost    
    ::1 root *26C378D308851D5C717C13623EFD6
    localhost root *26C378D308851D5C717C13623EFD6
    127.0.0.1 root *26C378D308851D5C717C13623EFD6

    (root,%),表示可以远程登录,并且是除服务器外的其他任何终端,%表示任意IP都可登录。
    (root,localhost),  表示可以本地登录,即可以在服务器上登陆,localhost则只允许本地登录。
    (root,127.0.0.1 ),表示可以本机登陆,即可以在服务器上登陆
    (root,sv01),表示主机名为sv1可以登陆,sv01具体指的哪台机器,可以在cat /etc/hostname查看
    (root,::1) ,  表示本机可以登陆, 看密码都是相同嘛,具体::1代表意义,待查

    权限列

    权限列决定了用户的权限,描述了用户在全局范围内允许对数据库和数据库表进行的操作,字段类型都是枚举Enum,值只能是Y或N,Y表示有权限,N表示没有权限。

    权限字段名称 备注说明
    Select_priv 确定用户是否可以通过SELECT命令选择数据
    Insert_priv 确定用户是否可以通过INSERT命令插入数据
    Delete_priv 确定用户是否可以通过DELETE命令删除现有数据
    Update_priv 确定用户是否可以通过UPDATE命令修改现有数据
    Create_priv 确定用户是否可以创建新的数据库和表
    Drop_priv 确定用户是否可以删除现有数据库和表
    Reload_priv  确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表重新加载权限表
     Shutdown_priv 确定用户是否可以关闭MySQL服务器在将此权限提供给root账户之外的任何用户时,都应当非常谨慎
    Process_priv  确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程 
    File_priv  确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令

    安全列

    安全字段名称 备注说明
    ssl_type 支持ssl标准加密安全字段
    ssl_cipher 支持ssl标准加密安全字段
    x509_issuer 支持x509标准字段
    x509_subject 支持x509标准字段
    password_expired 密码是否过期。Y:说明该用户密码已过期 N:没有过期
    plugin 5.5.7开始,mysql引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户
    authentication_string 通过authentication_string可以控制两者的映射关系,(PAM plugin等,PAM可以支持多个服务名)

    资源控制列

    控制字段名称 字段类型 是否为空 默认值 备注说明
    max_questions int(11)unsigned NO 0 每小时允许执行多少次查询:0表示无限制
    max_updates int(11)unsigned NO 0 每小时可以执行多少次更新:0表示无限制
    max_connections int(11)unsigned NO 0 每小时可以建立的多少次连接:0表示无限制
    max_user_connections int(11)unsigned NO 0 单用户可以同时具有的连接数:0表示无限制

    常用命令

    查询所有用户
    mysql> select Host,User,Password from user;
    
    查询用户权限:all表示所有权限,select表示只查权限,update表示只改权限,delete表示只删权限等。 mysql
    > show grants for "user"@"host"; mysql> show grants for "root"@"localhost";
    添加授权用户(新创建的用户,默认情况下是没有任何权限的):使用root用户连接到服务器 mysql
    > create user "用户名"@"IP地址" identified by "密码"; mysql> create user "haidon"@"%" identified by "123456"; mysql> create user "haidon"@"localhost" identified by "123456"; IP地址的表示方式: 1.% 表示用户可以从任何地址连接到服务器 2.localhost 表示用户只能从本地连接到服务器 3.指定一个ip表示用户只能从此ip连接到服务器
    分配用户权限(给用户授权) mysql
    > grant 权限列表 on 库.表 to "用户名"@"ip地址" with grant option; mysql> grant all privileges on *.* to "haidon"@"%" with grant option; mysql> grant all privileges on *.* to "haidon"@"%" identified by 'test' with grant option; mysql> grant all privileges on domain_check.tb_user to "haidon"@"localhost" with grant option; mysql> grant select on domain_check.tb_user to "haidon"@"localhost" with grant option; mysql> grant select,insert on domain_check.tb_user to "haidon"@"132.24.98.25" with grant option; 1.权限列表:selectupdatedeleteinsertalterdropcreate、...(show) 2.库.表:*.*表示所有库的所有表。with grant option表示它具有grant权限。密码是test。 3.如果带了 with grant option,那么用户haidon可以将select ,update权限传递给其他用户( 如xiaodon)。 4.如果没带 with grant option,那么用户haidon不能给用户xiaodon授权。 5.all后面加上privileges,具体到哪些权限时得看MySQL版本,5.7版本不加privileges,8.0版本加privileges。 6.mysql> insert into user values("%","haidon",password("test"),"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"); mysql> flush privileges; 这两句和上面第3句grant的效果是一样的。 7.mysql> insert into user (host,user) values("132.24.98.25","haidon"); mysql> insert into db values("132.24.98.25","haidon","Y","Y","Y","Y","Y","Y","N","N","N","N") mysql> flush privileges; 这三句和上面第6句grant的效果是一样的。
    收回用户权限 mysql
    > revoke all on *.* from "haidon"@"localhost"; mysql> revoke all on domain_check.tb_user from "haidon"@"localhost"; mysql> revoke select on *.* from "haidon"@"localhost";
    删除授权用户 mysql
    > drop user "用户名"@"ip地址" mysql> drop user "haidon"@"%" mysql> delete from user where user='haidon'; mysql> flush privileges;

    https://blog.csdn.net/lthirdonel/article/details/79011033

    https://www.cnblogs.com/yang--yang/p/7607736.html

    https://blog.csdn.net/zmx729618/article/details/78026497

    https://www.cnblogs.com/cyl048/p/7992376.html

  • 相关阅读:
    postman环境和全局变量设置语句
    2016 GitHub章鱼猫观察报告之开源统计
    Multiload-ng
    忠告初学者学习Linux系统的8点建议
    真有用?Snap和Flatpak 通吃所有发行版的打包方式。
    教你如何在Kali Linux 环境下设置蜜罐?
    下一代GNU/Linux显示服务Wayland 1.12正式发布
    为 Github 创造 Integration
    简单易懂的crontab设置工具集
    爆料喽!!!开源日志库Logger的剖析分析
  • 原文地址:https://www.cnblogs.com/liuhaidon/p/11511129.html
Copyright © 2011-2022 走看看