22.文件特殊权限位详解,SUID,SGID,SBIT,有效用户,特殊权限原理和设置深入讲解和示范

文件特殊权限位详解,SUID,SGID,SBIT,有效用户,特殊权限原理和设置,特殊权限对应的字母,特殊权限对应的数字,无效的特殊权限等实操


SetUID(SUID)

用途

之前章节讲解权限的时候,重点讲解了文件的rwx 权限;其实文件的权限还会用到 s 权限,例如/usr/bin/passwd文件:

[root@prometheus ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

原本文件所有者权限中的 x 权限位,却出现了 s 权限,此种权限称为 SetUID,简称 SUID 。

SUID 特殊权限仅适用于可执行文件,所具有的功能是对设有 SUID 的文件在执行的时候,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。(如果没有设置suid,则是谁调用命令,就会以谁的身份执行)

进程运行的是有效用户ID(euid egid)

系统内核是根据什么来确定一个进程对资源的访问权限的?

用户在运行脚本的时候,系统根据用户的euid,egid来确定脚本/进程对资源的访问权限。
绝大部分情况下 euid=uid,egid=guid;
uid,gid 是之前讲解过的用户id和用户组id,可以id命令查到用户的user id和group id。
effective uid,effective gid也就是euid,egid;全称就是有效用户id,有效组id。

suid/sgid作用

1. 不使用suid/sgid(常见情况)

普通文件zaishu是属于shuge,赋予可执行权限,没有设置SUID位:

-rwxr-xr-x 1 shuge dba 0 Nov 30 10:40 helloworld
[root@zaishu zaishu]# id shuge
uid=1108(shuge) gid=1105(dba) groups=1105(dba)
[root@zaishu zaishu]# id mysql
uid=1003(mysql) gid=1003(mysql) groups=1003(mysql)

当执行脚本或运行进程的时候,这个脚本没有SUID或SGID位,则euid=uid egid=gid,就是调用这个程序的用户uid和gid。

shuge运行helloworld ,有效用户就是shuge
mysql运行helloworld ,有效用户就是mysql

2. 使用suid/sgid
一个程序/脚本设置了SUID,则euid和egid变成被运行的程序的所有者的uid和gid

-rwsr-xr-x 1 shuge dba 0 Nov 30 10:40 helloworld  //设置了suid

[root@zaishu zaishu]# id shuge
uid=1108(shuge) gid=1105(dba) groups=1105(dba)
[root@zaishu zaishu]# id mysql
uid=1003(mysql) gid=1003(mysql) groups=1003(mysql)

此时即使用mysql用户执行helloworld,它实际有效用户还是shuge在调用。
SUID和SGID是在执行程序时起作用。

suid应用(passwd命令)

普通用户为什么能更改自己的密码?

1. 原因
Linux 系统中用户密码数据记录在 /etc/shadow 这个文件中,

[root@zaishu zaishu]# ll /etc/shadow
---------- 1 root root 1216 Nov 29 09:47 /etc/shadow

通过 ll /etc/shadow 命令可以看到,此文件的权限是 0(---------),正常情况下普通用户对此文件没有任何操作权限。 但为什么普通用户passwd 命令可以修改自己的密码?

[root@zaishu zaishu]# which passwd
/usr/bin/passwd
[root@zaishu zaishu]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

因为命令拥有 SUID 特殊权限,普通用户也有执行权限,所以用户执行passwd命令的时候,是以 root 的身份去执行 。

2. 取消SetUID
将 /usr/bin/passwd 文件的 SUID 权限取消,则普通用户不能修改密码成功。

#属主取消SetUID权限
[root@zaishu zaishu]# chmod u-s /usr/bin/passwd 
[root@zaishu zaishu]# ll /usr/bin/passwd 
-rwxr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

[r[root@zaishu zaishu]# su - mysql
Last login: Tue Nov 30 11:35:28 CST 2021 on pts/0
[mysql@zaishu ~]$ passwd
Changing password for user mysql.
Changing password for mysql.
(current) UNIX password: 
New password:
Retype new password:
password:Authentication token manipulation error  <--鉴定令牌操作错误
#最后密码没有生效

用户有执行 passwd 命令的权限,但无修改 /etc/shadow 文件的权限,因此最终密码修改失败。

suid原理

在这里插入图片描述

有效用户ID和有效组ID则决定了进程在运行时的权限。
当一个程序设置了为SUID位时,内核就知道了运行这个程序的时候,认定是文件的所有者在运行这个程序。即该程序运行的时候,有效用户ID是该程序的所有者。

当以mysql用户调用passwd更改密码时,由于passwd设置了SUID位,因此虽然进程的实际用户ID是mysql,但是进程的有效用户ID则是passwd文件的所有者root,因此可以修改/etc/passwd文件。

suid 特点

1. 只有可执行文件才能设定 SetUID 权限,对目录设定 SUID,是无效的。
2. 用户要对该文件拥有 x(执行)权限。
3. 用户在执行该文件时,会以文件所有者的身份执行。
4. SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。

SetGID(SGID)

当 s 权限位于文件所属组的 x 权限位时,就被称为 SetGID,简称 SGID 特殊权限。例如:

[root@zaishu zaishu]# ll /usr/bin/write
-r-xr-sr-x. 1 root tty 15344 Jun 10  2014 /usr/bin/write

SGID 既可以对文件进行配置,也可以对目录进行配置。

SetGID(SGID)对文件的作用

SGID 针对可执行文件有效,普通文件赋予 SGID 没有意义。
用户组需要对此可执行文件有 x 权限;
用户在执行具有 SGID 权限的可执行文件时,用户的群组身份会变为文件所属群组;
SGID 权限赋予用户改变组身份的效果,只在可执行文件运行过程中有效;

SGID 和 SUID 的不同之处就在于,SUID 是文件所有者的权限,而 SGID 文件所属组的权限。

[root@zaishu zaishu]# ll /usr/bin/write
-r-xr-sr-x. 1 root tty 15344 Jun 10  2014 /usr/bin/write
crw--w---- 1 root tty     4,  1 Nov 30 10:38 /dev/tty1

write 命令是用于在系统中发送消息给其他终端的用户,当用户执行命令,会实际成tty组的身份来执行。所以可以写入内容到/dev/tty1(例)。

SetGID(SGID)对目录的作用

sgid更常见的用途是针对目录,当目录赋予 SGID 权限后,进入目录的用户,其有效群组会变为该目录的所属组,用户在创建文件(或目录)时,该文件(或目录)的所属组将不再是用户的所属组,而使用的是目录的所属组。

[root@localhost ~]# cd /tmp
[root@zaishu tmp]# mkdir zaishu  //建立测试目录
[root@zaishu tmp]# chmod g+s zaishu/  //给测试目录赋予SetGID权限
[root@zaishu tmp]# ll -d zaishu/   // 查看
drwxr-sr-x 2 root root 6 Nov 30 14:28 zaishu/
[root@zaishu tmp]# chmod 777 zaishu/  //授权,让普通用户可以进入

[mysql@zaishu ~]$ cd /tmp/zaishu/
[mysql@zaishu zaishu]$ ls
[mysql@zaishu zaishu]$ touch abc
[mysql@zaishu zaishu]$ mkdir d1
[mysql@zaishu zaishu]$ ll -d d1/		//可看到属组是root
drwxrwsr-x 2 mysql root 6 Nov 30 14:30 d1/
[mysql@zaishu zaishu]$ ll abc 			//可看到属组是root
-rw-rw-r-- 1 mysql root 0 Nov 30 14:30 abc

SBIT

sbit 用途含义

Sticky BIT,简称 SBIT 特殊权限,可意为粘着位、粘滞位、防删除位等。
SBIT 权限仅对目录有效,一旦目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有自己和 root 才有权利修改或删除该文件,其他用户即使有权限,也只能新增。

当甲用户以目录所属组或其他人的身份进入 A 目录时,如果甲对该目录有 w 权限,则表示对于 A 目录中任何用户创建的文件或子目录,甲都可以进行修改甚至删除等操作。但是,如果 A 目录设定有 SBIT 权限,那甲用户只能操作自己创建的文件或目录,而无法修改及删除其他用户创建的文件或目录。

SBIT示例

举个例子,linux 系统中,存储临时文件的 /tmp 目录就设定有 SBIT 权限:

[root@zaishu ~]# chmod 1777 /shu/  //授予了777权限,同时也授予了sbit的权限
[root@zaishu ~]# ll -d /shu/
# 其他用户权限设定中,x 权限位被 t 权限替换,表示此目录有 SBIT 权限。
drwxrwxrwt 2 mysql mysql 6 Dec  1 09:35 /shu/
[mysql@zaishu shu]$ touch my2
[mysql@zaishu shu]$ mkdir mydir2
[root@zaishu ~]# su - shuge  //切换用户
[shuge@zaishu ~]$ cd /shu/   //进入目录验证
[shuge@zaishu shu]$ ls
my2  mydir2
[shuge@zaishu shu]$ rm my2   //不允许删除文件,即使设定是 777 有x的权限
rm: remove write-protected regular empty file ‘my2’? y
rm: cannot remove ‘my2’: Operation not permitted
[shuge@zaishu shu]$ rm -rf mydir2  //不允许删除目录,即使设定是 777 有x的权限
rm: cannot remove ‘mydir2’: Operation not permitted

[shuge@zaishu shu]$ cat "abc" > my2   //不允许修改文件,即使设定是 777 
-bash: my2: Permission denied

这就是 SBIT 权限的作用。仅允许在目录中新建文件,不允许删除修改不是属主自己的文件。

特殊权限设置(SUID、SGID和SBIT)

上面详细讲解了SUID、SGID、SBIT 特殊权限和各自的功能,这一章节重点介绍如何设置

从坐往右数,第9-7位、6-4位、3-1位分别表示文件所有者的权限,同组用户的权限,其他用户的权限。

r表示可读,可以读出文件的内容
w表示可写,可以修改文件的内容
x表示可执行,可运行这个程序
没有权限的位置用 -表示
[root@zaishu tmp]# ls -l /usr/bin/vi
-rwxr-xr-x. 1 root root 910176 Oct 31  2018 /usr/bin/vi

特殊权限对应的字母

设置了SUID或SGID位,会表现在所有者或组的权限位:

1、-rwsr-xr-x 表示SUID和所有者权限中可执行位被设置
2、-rwSr--r-- 表示SUID被设置,但所有者权限中可执行位没有被设置
3、-rwxr-sr-x 表示SGID和同组用户权限中可执行位被设置
4、-rw-r-Sr-- 表示SGID被设置,但同组用户权限中可执行位没有被设置

通过chmod 命令进行修改,给文件加SUID和SUID的命令如下:

chmod u+s filename  # 设置SUID位
chmod u-s filename  # 去掉SUID设置
chmod g+s filename # 设置SGID位
chmod g-s filename # 去掉SGID设置

特殊权限对应的数字

文件权限实际由12个二进制位构成(之前是用9位构成),示有相应的权限:

121110987654321
suidsgidtrwxrwxrwx

s:suid,简写是s
s: sgid,简写也是s
t : sbit,简写是t

1. 查看passwd文件

[mysql@zaishu zaishu]$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

-rwsr-xr-x 对应完整的字母是: s-- rwx r-x r-x ;对应的数字是 4 7 5 5

[root@zaishu tmp]# chmod 4755 /usr/bin/passwd  //结果同上
[root@zaishu tmp]# ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd

2. umask的默认权限值
umask的用法可参照之前讲解的章节。

通过umask也可以看到实际是应用12位
[root@node2 tmp]# umask
0022
代表含义 --- --- -w- -w-

chmod 通过字母授权

使用字母的形式。
通过 “u+s” 给文件赋予 SUID 权限;通过 “g+s” 给文件或目录赋予 SGID 权限;通过 “o+t” 给目录赋予 SBIT 权限。

1. 添加权限

[root@zaishu zaishu.cn]# chmod u+s,g+s,o+t test    //设置特殊权限
[root@zaishu zaishu.cn]# ll
-rwSr-Sr-T 1 root root 0 Nov 30 15:58 test
大写字母 ,表示没有执行位 
rwSr-Sr-T 等同于是: sgt  rw-r--r--  如果用数字表示:  7644

[root@zaishu zaishu.cn]# chmod 7644 test2   
[root@zaishu zaishu.cn]# ll 
total 0
-rwSr-Sr-T 1 root root 0 Nov 30 15:58 test
-rwSr-Sr-T 1 root root 0 Nov 30 15:59 test2  // 效果一样

2. 取消特殊权限

[root@zaishu zaishu.cn]# chmod u-s,g-s,o-t test
[root@zaishu zaishu.cn]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 30 15:58 test
-rwSr-Sr-T 1 root root 0 Nov 30 15:59 test2

注意:没有执行权限的文件,授予特殊权限没有意义。

chmod 通过数字授权

SUID、SGID、SBIT 分别对应的数字:
SUID --> 100 , 4
SGID --> 010 , 2
SBIT --> 001 , 1

将一个文件权限设置为 -rwsr-xr-x,如何用数字授权?
文件的普通权限为 755,另外,此文件还有 SUID 权限,因此只需在 755 的前面,加上 SUID 对应的数字 4 。也就是说,只需执行chmod 4755 文件名命令,就完成了-rwsr-xr-x 权限的设定。

同样的道理,如果某文件拥有 SUID 和 SGID 权限,需要 chmod 命令传递 6;如果某目录拥有 SGID 和 SBIT,需要给 chmod 命令传递 3— 。
给文件设置 7—,也就是将 SUID、SGID、SBIT赋予一个文件或目录,例如:

[root@zaishu ~]# chmod 7777 shu
#一次赋予SetUID、SetGID和SBIT权限
[root@zaishu  ~]# ll shu
-rwsrwsrwt. 1 root root Apr 19 23:54 shu

大写S/T

无论是 SUID、SGID 还是 SBIT,它们只针对具有 x 权限的文件或目录有效。没有 x 权限的文件或目录,即便赋予特殊权限,也无法发挥它们的功能,没有任何意义。
例如,我们就是要给不具有 x 权限的文件或目录赋予特殊权限,看看有什么效果:

[root@zaishu ~]# chmod 7666 shu  //666 表示没有x权限 rw-rw-rw-
[root@zaishu ~]# ll shu
-rwSrwSrwT. 1 root root Apr 23:54 shu

可以看到,相应的权限位会被标记为 S(大写)和 T(大写),指的就是设置的 SUID、SGID 和 SBIT 权限没有意义。


总结

文件特殊权限位详解,SUID,SGID,SBIT,有效用户,特殊权限原理和设置,特殊权限对应的字母,特殊权限对应的数字,无效的特殊权限等实操

友情链接

MySQL性能优化_原理_实战

1、MySQL在金融互联网行业的企业级安装部署

目录章节
版本说明版本说明
安装MySQL规范1 安装方式
2 安装用户
3 目录规范
MySQL 5.7 安装部署1 操作系统配置
2 创建用户
3 创建目录
4 安装
5 配置文件
6 安装依赖包
7 配置环境变量
8 初始化数据库
9 重置密码
MySQL8 安装MySQL8 安装
源码安装1 安装依赖包
2 生成源码包
3 创建用户
4 编译安装
5 配置数据库
6 连接mysql
多实例部署及注意事项1 多实例概念
2 多实例安装
3 mysqld_multi(多实例第二种安装方式)

2、mysql启动关闭原理和实战_及常见错误排查

目录章节
生产中MySQL启动方式1、 启动原理
2、参数文件默认位置及优先级
3、 以server方式启动
4、 mysqld_safe方式
5、 mysqld 方式
6、 systemctl 方式
关库1、相关参数innodb_fast_shutdown
2、相关参数innodb_force_recovery
3、关闭mysql多种方式
常见MySQL启动失败案例1.、目录权限
2、参数问题
3、配置文件
4、端口占用
5、误删二进制文件
6、undo表空间异常
7、binlog缓冲异常
MySQL启动失败排查方法MySQL启动失败排查方法
连接MySQL数据库的方式连接MySQL数据库的方式
MySQL数据库用户安全策略1、初始化数据库
2、修改密码
3、删除无用的用户
4、mysql_secure_installation
找回丢失的用户密码找回丢失的用户密码

3、MySQL字符集和校对规则

目录章节
MySQL字符集和校验规则MySQL字符集和校验规则
查看字符集方法1、查看mysql支持的字符集
2、查看字符集的校对规则
3、查看当前数据库的字符集
4、查看当前数据库的校对规则
MySQL字符集设置1、字符集设置层级关系
2、设置MySQL服务器级别字符集
3、设置创建对象的字符集
字符集案例1、常用字符集每个汉字占用字节多少
2、大小案例
插入中文乱码解决插入中文乱码解决
数据库常见字符集及如何选择字符集数据库常见字符集及如何选择字符集
生产中如何彻底避免出现乱码生产中如何彻底避免出现乱码

4、史上最详细的Mysql用户权原理和实战_生产案例

目录章节
访问控制1、连接验证(阶段一)
2、允许的连接
3、连接优先级
4、请求验证(阶段二)
用户管理1、新增用户
2、修改用户
3、删除用户
4、查看用户
密码管理1、密码修改
2、密码过期设置
3、set password
4、密码过期策略
5、密码插件
MySQL用户权限管理1、权限粒度
2、显示账户权限
3、显示账户非权限属性
4、库级权限
5、表级权限
6、列级权限
7、权限回收
资源限制1、用户创建指定配额
2、修改配额
MySQL用户权限案例1、断掉已清理的用户
2、忘记密码
3、如何禁止一个ip段的某个用户登录
4、创建开发账号
5、创建复制账号
6、创建管理员账号

5、InnoDB引擎原理和实战_通俗易懂

目录章节
缓冲池1、默认引擎
2、设置缓冲池大小
3、优化缓冲池
4、管理缓冲池
5、数据页类型
线程1、IO线程
2、主线程
index pageindex page
insert buffer pageinsert buffer page
重做日志重做日志
回滚日志回滚日志
checkpoint,刷写脏页check pointcheckpoint
关键特性1、插入缓冲
2、数据写入可靠性提升技术-doublewrite
3、自适应哈希索引-AHI
innodb预读预写技术预读写

6、MySQL文件详解_物理结构_逻辑结构_原理和案例

目录章节
参数和配置文件1、文件位置
2、查找参数
3、参数类型
4、参数修改
5、示例一
6、示例二
7、注意事项
错误日志文件错误日志
通用日志通用日志
慢查询日志慢日志
binlog1、记录什么
2、用途
3、开启和参数配置
4、日志查看
5、日志刷新
6、删除日志
7、日志分析(mysqlbinlog)
8、利用二进制日志文件恢复误删的表
InnoDB存储引擎表空间文件表空间文件
主从同步相关文件主从同步文件
套接字文件套接字文件
pid 文件pid 文件
redo log1、redo初识
2、日志组
3、与oracle redo的区别
4、相关参数
5、和binlog的区别
6、redo 缓冲区(innodb_flush_log_at_trx_commit)
InnoDB存储引擎逻辑结构1、表空间
2、段
3、区
4、页
表碎片清理1、判断是否有碎片
2、整理碎片
表空间文件迁移1、需求
2、操作

7、SQL编程开发与优化事项

目录章节
常用语句1、导入数据
2、库操作
3、表操作
4、数据操作
5、use性能影响
6、delete、truncate、drop的区别
7、SQL语句分类
数据类型与性能1、整型
2、浮点型
3、字符串类型
4、日期类型
MySQL约束1、unsigned/signed
2、not null
3、count(*) 为什么慢
4、default
5、unique
6、 auto_increment
7、primary key
SQL编程高级1、查询Syntax
2、查询列
3、where子句
4、group by … having子句
5、order by子句
6、limit子句(分页)
7、聚合函数
8、合并查询
9、多表查询
10、子查询
表的元数据库管理1、统计应用库哪些表没有使用innodb存储引擎
2、如何查看表中是否有大对象
3、统计数据库大小
4、统计表的大小

8、MySQL索引原理和案例

目录章节
MySQL索引与二分查找法1、什么是索引
2、索引的优缺点
3、索引的最大长度
4、二分查找法:折半查找法
5、mysql一张表存多少数据后,索引性能就会下降?
剖析b+tree数据结构1、B和B+树的区别
2、索引树高度
3、非叶子节点
4、指针
5、叶子节点
6、双向指针
7、b+tree插入操作
8、b+tree删除操作
相辅相成的聚集索引和辅助索引1、聚集索引
2、聚集索引特点
3、聚集索引的优势
4、辅助索引
覆盖索引与回表查询1、回表查询
2、覆盖索引
创建高性能的主键索引1、主键索引创建的原则
2、主键索引的特点
3、为什么建议使用自增列作为主键
唯一索引与普通索引的性能差距1、唯一索引特点
2、普通索引特点
3、唯一索引与普通索引的性能差距
前缀索引带来的性能影响1、作用
2、坏处
如何使用联合索引1、什么是联合索引
2、创建原则
3、排序
Online DDL影响数据库的性能和并发1、5.6版本之前
2、新版本
3、online ddl语法
4、相关参数
5、示例
6、影响
pt-ocs原理与应用1、安装pt-osc
2、pt-osc语法
3、案例
4、pt-osc原理
生产中索引的管理1、建表时创建索引
2、建表后创建索引
3、查看索引
SQL语句无法使用索引的情况1、where条件
2、联合索引
3、联表查询
4、其他情况

9、information_schema和sys中性能查看

目录章节
最常用的STATISTICS和TABLES1、STATISTICS:用于存放索引的信息
2、TABLES:用于存放库表的元数据信息
判断索引创建是否合理1、选择性
2、索引创建的建议
检查联合索引创建是否合理1、联合索引创建是否合理
2、有了联合索引(a,b),还需要单独创建a索引吗?
如何查找冗余索引查找冗余索引
查找产生额外排序的sql语句额外排序的sql语句
查找产生临时表的sql语句临时表的sql语句
全表扫描的sql语句全表扫描的sql语句
统计无用的索引无用的索引
索引统计信息1、存储索引统计信息
2、如何查看索引统计信息

10、MySQL优化器算法与执行计划

目录章节
简单嵌套查询算法-simple nested-loop joinsimple nested-loop join
基于索引的嵌套查询算法-index nested-loop joinindex nested-loop join
基于块的嵌套查询算法- block nested-loop joinblock nested-loop join
Multi-Range ReadMRR
bached key access joinBKA
mysql三层体系结构体系结构
Index Condition Pushdown索引条件下推
一条查询SQL语句是怎样运行的查询SQL语句
一条更新SQL语句是怎样运行的更新SQL语句
MySQL长连接与短连接的选择1、相关参数
2、断开连接
执行计划explain1、语法
2、执行计划解析

11、MySQL查询优化

目录章节
MySQL查询优化技术概览
子查询优化1、优化器自动优化
2、优化措施:子查询合并
3、优化措施:子查询上拉技术
外连接消除外连接消除
生产环境不使用join联表查询不使用join
group by分组优化1、group by执行流程
2、为什么group by要创建临时表
order by排序优化排序优化
MySQL性能抖动问题性能抖动问题
count(*)优化count(*)优化
磁盘性能基准测试1、安装sysbench
2、生成文件
3、测试文件io
4、清除文件
MySQL基准测试1、生成数据
2、测试(读)
3、测试(写)
4、清理数据

12、事务原理和实战

目录章节
认识事务认识事务
事务控制语句1、开启事务
2、事务提交
3、事务回滚
事务的实现方式1、原子性
2、一致性
3、隔离性
4、持久性
purge thread线程purge thread线程
事务统计QPS与TPS1、QPS
2、TPS
事务隔离级别1、隔离级别
2、查看隔离级别
3、设置隔离级别
4、不同隔离级别下会产生什么隔离效果
事务组提交group commit组提交
事务两阶段提交两阶段提交
MVCC多版本并发控制1、MVCC原理
2、MVCC案例

13、锁的原理和应用

目录章节
认识锁1、锁的作用
2、加锁的过程
3、锁对象:事务
innodb行锁1、行锁类型
2、共享锁(S锁)
3、排他锁(X锁)
索引对行锁粒度的影响1、行锁粒度有哪些
2、在RC隔离级别下不同索引产生的锁的范围
3、RR隔离级别下不同索引产生锁的范围
FTWRL全局读锁FTWRL全局读锁
innodb表锁innodb表锁
innodb意向锁与MDL锁1、意向锁
2、意向锁作用
3、意向锁冲突情况
4、MDL锁
自增锁自增锁
插入意向锁插入意向锁
死锁1、什么是死锁
2、相关参数
3、避免死锁
4、锁的状态
两阶段锁协议两阶段锁协议

14、慢查询原理和实战_快速优化方法_优化工具

目录章节
1. 系统状态show status
2. 慢查询2.1 慢查询开启
2.2 简单示例
2.3 数据准备
3. mysqldumpslow3.1 语法
3.2 常见用法
4. pt-query-digest4.1 安装
4.2 语法选项
4.3 报告解读
4.4 用法示例
5. 优化工具(soar)5.1 安装配置
5.2 添加数据库
5.3 语句优化

15、备份恢复原理和实战_逻辑备份_物理备份_金融行业备份还原脚本

目录章节
1.生产中备份方式1.1 物理备份与逻辑备份
1.2 联机与脱机备份
1.3 完整备份与增量备份
1.4 常用命令
2.mysqldump备份2.1 相关参数
2.2 备份所有数据库
2.3 备份指定数据库
2.4 备份指定表
2.6 只导出结构
2.7 只导出数据
2.8 --tab(生成文本,类似load)
2.8 mysqldump原理
2.9 binlog异步备份
2.10 利用mysqldump全备及binlog恢复数据
3.xtrabackup3.1 Xtrabackup安装
3.2 原理
3.2 备份过程
3.4 恢复原理
3.3 相关参数
3.4 xtrabackup相关文件
3.5 备份示例
3.6 还原示例
4.binlog备份和恢复(数据库恢复)4.1 找到恢复时间点
4.2 增量恢复
5. 生产环境的备份恢复实战5.1 实施部署
5.1.1 环境清单
5.1.2 备份目的
5.1.3 备份说明
5.1.4 实施步骤
5.1.5 全备脚本
5.1.6 差异备份脚本
5.2 实施部署备份还原
5.2.1 Xtraback还原全量/差异备份
5.2.2 故障点数据恢复
5.2.3 增量恢复

16、主从复制,gtid,并行复制_半同步复制_实操案例_常用命令_故障处理

目录章节
1.认识主从复制1.1 主从复制原理深入讲解
1.2 主从复制相关参数
1.3.主从复制架构部署
1.4从库状态详解
1.5 .过滤复制
2 .gtid复制2.1 什么是GTID?
2.2 GTID主从配置
2.5 gtid维护
2.4 GTID的特点
2.3 工作原理
2.4 gtid相关状态行和变量
3. 并行复制3.1 延迟的原因
3.2 并行复制设置
3.3 查看并行复制
4. 增强半同步复制4.1 异步复制
4.2 半同步复制
4.3 增强半同步复制
4.4 配置增强半同步
5. 案例5.1 主库删除操作导致sql线程关闭案例
5.2 主从复制中断解决方案及案例
5.3 延迟复制
5.4 主库drop误操作利用延迟复制恢复案例
6 常用命令6.1 启动线程
6.2 关闭线程
6.3 查看
6.4 重置
6.5 主从数据一致性校验

17、MySQL高可用和读写分离架构
MHA

目录章节
MHA介绍
架构和相关组件架构和相关组件
工作流程工作流程
MHA高可用架构部署1、环境准备
2、软件安装
3、创建软链接
4、配置各节点互信
5、节点免密验证
6、mha管理用户
7、配置文件
8、状态检查
9、开启MHA
主库宕机故障模拟及处理主库宕机故障模拟及处理
MHA VIP自动切换VIP自动切换
MHA主从数据自动补足MHA主从数据自动补足

Atlas

目录章节
Atlas读写分离高性能架构介绍
安装配置安装配置
配置注解配置注解
启动和关闭启动和关闭
读写分离架构应用读写分离架构应用
创建应用用户创建应用用户
Atlas在线管理Atlas在线管理
读写分离避坑指南读写分离避坑指南

18、MySQL分库分表_原理实战

目录章节
1.MyCAT分布式架构入门及双主架构1.1 主从架构
1.2 MyCAT安装
1.3 启动和连接
1.4 配置文件介绍
2.MyCAT读写分离架构2.1 架构说明
2.2 创建用户
2.3 schema.xml
2.4 连接说明
2.5 读写测试
2.6 当前是单节点
3.MyCAT高可用读写分离架构3.1 架构说明
3.3 schema.xml(配置)
3.4 文件详解
3.4.1 schema标签
3.4.2 table标签
3.4.3 dataNode标签
3.4.4 dataHost
3.4 读写测试
3.5 故障转移
4.MyCAT垂直分表4.1 架构
4.2 新建表
4.3 配置mycat
4.4 验证
5 MyCAT水平分表-范围分片5.1 新建表
5.2 schema.xml
5.2 rule.xml
5.3 autopartition-long.txt
5.4 验证
6. MyCAT水平分表-取模分片取模分片
7. MyCAT水平分表-枚举分片枚举分片
8. MyCAT全局表与ER表全局与ER表
8.1 全局表8.1.1 特性
8.1.2 建表
8.1.3 配置
8.1.4 验证
8.1.5 分析总结(执行计划)
8.2 ER表8.2.1 特性
8.2.2 建表
8.2.3 配置
8.2.4 测试验证,子表是否跟随父表记录分片
8.2.5 分析总结(执行计划)

19、基准性能测试_sysbench

目录章节
1. sysbench1.1 用途
1.2 安装
1.3 版本
1.4 查看帮助
1.5 测试过程阶段
2 CPU 性能测试2.1 测试原理
2.2 查看帮助
2.3 测试
3. 内存性能测试3.1 查看帮助信息
3.2 测试过程
4.磁盘性能基准测试4.1 查看帮助
4.2 生成文件(prepare)
4.3 测试文件io(run)
4.4 结果分析
4.5 清除文件(cleanup)
5. 线程测试5.1 查看帮助信息
5.2 测试过程
6. MySQL基准测试6.1 语法参数
6.2 生成数据
6.3 测试(读)
6.4 测试(写)
6.5 清理数据
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值