Análisis de la estructura lógica y física de Mysql

1. Estructura lógica de MySQL

1.1 Comparación de la estructura lógica de MySQL y Linux


Carpeta / directorio de la biblioteca de MySQL Linux
Archivos de tabla (nombre de archivo, contenido, permisos)
Todo en Linux es un archivo. Todo en Linux es un comando.
Todo es una tabla en MySQL. Todo en MySQL es SQL.

1.2 Características de los objetos lógicos MySQL

Biblioteca: nombre de biblioteca + atributo de biblioteca
Tabla: columna (nombre de columna + atributo de columna) + fila (metadatos + datos) + atributo de tabla + nombre de tabla

2. Estructura física

2.1 Perspectiva macro

ll / data / mysql

Motor de almacenamiento de la tabla de usuario: MyISAM
user.frm almacena información del diccionario de datos (información relacionada con la columna)
user.MYD almacena las filas de datos
user.MYI almacena el índice

motor de almacenamiento de tabla slave_master_info: Innodb
slave_master_info.frm almacena información del diccionario de datos (información relacionada con la columna)
slave_master_info.ibd almacena filas e índices de datos

2.2 Vista microscópica

Segmento: segmentos Una tabla es un segmento (segmento de datos, segmento de retroceso), compuesto por áreas 1-N

Área: las extensiones, también conocidas como clústeres, se componen de 64 páginas conectadas, con un tamaño predeterminado de 1 M

Página: la página X.ibd asigna la unidad IO más pequeña en MySQL, el tamaño predeterminado es 16 KB y 4 bloques de sistema operativo conectados

Bloque: bloque del sistema de archivos del formato de bloque del sistema operativo mkfs, el valor predeterminado es un bloque de 4 KB, que es de 8 sectores consecutivos.

Sector: el sector predeterminado es 512B, un área de disco continua con una longitud de 512 bytes

Los conceptos de diseño de sectores, OS Block, PAGE, extensiones y segmentos son todos para poder programar -----> OS ----> HDisk, desde la lógica hasta las operaciones físicas para garantizar IO lo más "continuo" posible .

3. Gestión de derechos

3.1 El papel de los permisos

¿El papel de linux?
Restrinja y controle las operaciones que los usuarios pueden hacer con los archivos de Linux.
Los permisos pertenecen a los atributos del archivo.

¿El papel de mysql?
Restrinja y controle las operaciones que los usuarios pueden hacer con los objetos (bibliotecas, tablas) en mysql.
Los permisos pertenecen a los atributos del usuario.

3.2 Definición de permiso

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

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

mysql> mostrar privilegios;
todos los privilegios incluyen todos los privilegios en la lista de mostrar privilegios, excepto la opción Grant.
Nota: los usuarios solo pueden iniciar sesión sin autorización.

3.3 Gestión de derechos

1. Autorización de usuario superadministrador
versión 5.7:
Sintaxis: conceder permiso sobre el alcance del permiso al usuario identificado por contraseña;
conceder todo activado . A ansel@'10.0.0.% 'identificado por' 123 'con opción de concesión;
versión 8.0:
ROLE Create un nuevo grupo de permisos, use el rol creado directamente al autorizar

创建角色:
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';

Alcance de la autoridad: qué objetos puede operar el usuario.
. ====> chmod -R 777 / nivel de biblioteca completo, usuario administrador
ansel. * ====> chmod -R 777 / ansel / * nivel de biblioteca único, usuario normal
ansel.t1 ====> chmod- R 777 / ansel / t1 nivel de tabla única, usuario común

2. Autorice
los
permisos de un usuario normal test@'10.0.0.% ' : seleccionar, eliminar, actualizar, insertar
rango: 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 Introducción al formulario de autorización

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

Inserte la descripción de la imagen aquí

Para obtener más contenido interesante, siga la cuenta pública de WeChat para ver

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_45320660/article/details/114966471
Recomendado
Clasificación