Mysql的逻辑、物理结构剖析

1.MySQL 逻辑结构

1.1 MySQL逻辑结构和Linux对比

MySQL Linux
库 目录/文件夹
表 文件(文件名,内容,权限)
Linux中一切皆文件。 Linux一切皆命令。
MySQL中一切皆表。 MySQL一切皆SQL。

1.2 MySQL逻辑对象的特点

库: 库名+库属性
表: 列(列名+列属性)+行(元数据+数据)+表属性+表名

2.物理结构

2.1 宏观角度

ll /data/mysql

user表存储引擎:MyISAM
user.frm 存储数据字典信息(列相关信息)
user.MYD 存储数据行
user.MYI 存储索引

slave_master_info 表存储引擎:Innodb
slave_master_info.frm 存储数据字典信息(列相关信息)
slave_master_info.ibd 存储数据行和索引

2.2 微观角度

段:segments 一个表就是一个段(数据段、回滚段),由1-N个区构成

区:extents 又被称簇,由64个连接的page构成,默认大小1M

页:page X.ibd分配MySQL当中最小的IO单元,默认大小16KB,连接的4个OS block

块:OS block 格式化mkfs文件系统块,默认是4KB的block,是连续的8个扇区。

扇区:sector 默认512B,连续的512字节长度的磁盘区域

扇区、OS Block、PAGE、extents、segments设计理念,都是为了能够程序----->OS ---->HDisk,从逻辑到物理操作都能够保证尽可能“连续“IO。

3. 权限管理

3.1 权限作用

linux中的作用?
约束、控制用户能对linux文件做什么样操作。
权限属于文件的属性。

mysql中的作用?
约束、控制用户能对mysql中的对象(库、表)做什么样操作。
权限属于用户的属性。

3.2 权限定义

    linux中的权限:	rwx(421)
    mysql中的权限:
        8.0以前:基于命令方式的授权。	---以命令为授权粒度
        8.0以后:加入了role(角色)方式授权。

    通过以下命令,可以查看可授权的列表

mysql> show privileges;
all权限包含了show privileges列表中所有的权限,除过Grant option
注:创建了用户,没有授权,只能登录。

3.3 权限管理

1.超级管理员用户授权
5.7版本:
语法:grant 权限 on 权限范围 to 用户 identified by 密码 ;
grant all on . to ansel@‘10.0.0.%’ identified by ‘123’ with grant option;
8.0版本:
ROLE创建一个新的权限组,授权时直接使用创建的role

创建角色:
CREATE ROLE 'app_developer', 'app_read', 'app_write';
角色授权:
GRANT ALL ON app_db.* TO 'app_developer';
GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';
创建用户:
CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass';
CREATE USER 'read_user1'@'localhost' IDENTIFIED BY 'read_user1pass';
CREATE USER 'read_user2'@'localhost' IDENTIFIED BY 'read_user2pass';
CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';
授权用户角色
GRANT 'app_developer' TO 'dev1'@'localhost';
GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';
GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost';

权限范围:用户能够操作的对象是哪些。
. ====> chmod -R 777 / 全库级别,管理员用户
ansel.* ====> chmod -R 777 /ansel/* 单库级别,普通用户
ansel.t1 ====> chmod -R 777 /ansel/t1 单表级别,普通用户

2.授权一个普通用户
test@‘10.0.0.%’
权限:select、delete、update、insert
范围:test.*

grant select,update,delete,insert on test.*  to test@'10.0.0.%' identified by '123456';
查看授权:
mysql> show grants for test@'10.0.0.%';
回收权限:
mysql> revoke delete on test.* from test@'10.0.0.%';
mysql> show grants for test@'10.0.0.%';

3.4 授权表介绍

select * from mysql.user\G
select * from mysql.db\G
select * from mysql.tables_priv\G

在这里插入图片描述

更多精彩内容,请关注微信公众号查看

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45320660/article/details/114966471
今日推荐