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.权限列表:select、update、delete、insert、alter、drop、create、...(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

Mysql—用户表详解(mysql.user)的更多相关文章

  1. mysql.user表详解

    GRANT语法:     GRANT 权限 ON 数据库.* TO 用户名@'登录主机' IDENTIFIED BY '密码'  权限:  ALL,ALTER,CREATE,DROP,SELECT,U ...

  2. mysql分表详解

    经常听到有人说“数据表太大了,需要分表”,“xxxx了,要分表”的言论,那么,到底为什么要分表? 难道数据量大就要分表? mysql数据量对索引的影响 本人mysql版本为5.7 新增数据测试 为了测 ...

  3. MySQL数据库优化详解(收藏)

    MySQL数据库优化详解 mysql表复制 复制表结构+复制表数据mysql> create table t3 like t1;mysql> insert into t3 select * ...

  4. MySQL 执行计划详解

    我们经常使用 MySQL 的执行计划来查看 SQL 语句的执行效率,接下来分析执行计划的各个显示内容. EXPLAIN SELECT * FROM users WHERE id IN (SELECT ...

  5. shell编程系列23--shell操作数据库实战之mysql命令参数详解

    shell编程系列23--shell操作数据库实战之mysql命令参数详解 mysql命令参数详解 -u 用户名 -p 用户密码 -h 服务器ip地址 -D 连接的数据库 -N 不输出列信息 -B 使 ...

  6. Mysql 三大特性详解

    Mysql 三大特性详解 Mysql Innodb后台线程 工作方式 首先Mysql进程模型是单进程多线程的.所以我们通过ps查找mysqld进程是只有一个. 体系架构 InnoDB存储引擎的架构如下 ...

  7. 转载:MySQL EXPLAIN 命令详解学习

    转载自:https://blog.csdn.net/mchdba/article/details/9190771 MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查 ...

  8. MySQL EXPLAIN 命令详解

    MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提 ...

  9. mysql之explain详解

    mysql之explain详解 mysql之explain各个字段的详细意思: 字段 含义 select_type 分为简单(simple)和复杂 type all : 即全表扫描 index : 按 ...

随机推荐

  1. Java 网络编程初探

    Java 网络编程 网络编程 网络编程:进行服务器端与客户端编程的开发操作实现. java.net:网络操作包 B/S结构: 浏览器/服务器模式(Browser/Server) 不在开发客户端代码 开 ...

  2. ENDIAN的由来及BIG-EDIAN 和LITTLE-ENDIAN(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kingmax54212008/arti ...

  3. pip方式安装Jupyter

    pip方式安装Jupyter 如你的cmd命令窗口无法识别pip命令,请配置下环境变量(将python的''Scripts''文件夹路径添加至''path''变量里面). 使用以下命令更新pip和安装 ...

  4. pjd-fstest The test suite checks POSIX compliance - 测试文件系统posix 接口兼容性

    pjd-fstest: 参考网址:https://www.tuxera.com/community/posix-test-suite/ fstest是一套简化版的文件系统POSIX兼容性测试套件,它可 ...

  5. Vue你不知到的$this.emit()的用法

    需求 需求:除了拿到false,还要拿到v-for中的index 如何解决:再使用一次父传子,:a="index" 将下标值传递给子组件   注意要加引号   <expert ...

  6. python之海龟绘图

    1. 基本功能介绍 在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动.这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条.通过编写代码,以各种很酷的模式 ...

  7. python logging模块“另一个程序正在使用此文件,进程无法访问。”问题解决办法

    在多进程下使用python的logging模块,经常会遇到"另一个程序正在使用此文件,进程无法访问."的错误. 解决办法: https://github.com/Preston-L ...

  8. Norm比较

    目录 Introduction BN LN IN GN SN Conclusion Introduction 输入图像shape记为[N, C, H, W] Batch Norm是在batch上,对N ...

  9. python保存文字到文件中

    使用encode方法即可,举例如下: #-*-coding:utf-8-*- def save(re, name): file = open("index_cut.txt", &q ...

  10. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 6

    18.5.3  PDO的错误处理模式 PDO共提供了3种不同的错误处理模式,不仅可以满足不同风格的编程,也可以调整扩展处理错误的方式. 1.PDO::ERRMODE_SILENT 这是默认模式,在错误 ...