Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:mysql:数据存储层级

MySQL的数据存储层级


MySQL 的数据隔离层级结构

MySQL 的数据组织是有明确层级的,从高到低如下:

实例(Instance)
 └── 数据库(Database / Schema)
      └── 表(Table)
           └── 行(Row)

1. 实例(Instance)

  1. 一台 MySQL 服务器运行的 MySQL 服务程序就是一个实例。
  2. 一个实例可以包含多个数据库(就像 Redis 实例包含多个逻辑数据库)。

2. 数据库(Database)

  1. 又称为“Schema”,是数据的第一层隔离单位。
  2. 每个数据库可以包含多张表。

创建数据库命令:

CREATE DATABASE myshop;

访问/使用数据库:

USE myshop;

3. 表(Table)

  1. 数据以表格方式组织,包含行和列。
  2. 每个数据库下的表名是唯一的。
  3. 表之间数据是完全隔离的,但可以通过 JOIN 等方式建立关系。
  4. 书写的时候,数据库名和表名之间使用点(.)隔离,比如[mysql.user]就是一张表

4. 行(Row)

  1. 表的最小数据单位。
  2. 有事务控制(比如 InnoDB 引擎支持行级锁)。

权限隔离机制

MySQL 支持 细粒度的权限控制

范围 示例权限设置
整个服务器 拒绝某个用户连接 MySQL
某个数据库 GRANT ALL ON myshop.* TO 'alice'@'localhost';
某张表 GRANT SELECT ON myshop.orders TO 'bob'@'localhost';
某列 GRANT SELECT(name) ON myshop.customers TO 'tom'@'localhost';(较少用)
某操作类型 GRANT INSERT, SELECT ON …(控制能不能写)

多库、多租户支持

可以在一个 MySQL 实例中为不同项目创建独立数据库:

CREATE DATABASE app1;
CREATE DATABASE app2;

然后为每个数据库分配不同用户权限,实现项目级隔离

/var/www/DokuWikiStick/dokuwiki/data/pages/程序/mysql/数据存储层级.txt · Last modified: 2025/05/20 11:38 by zhonghui