From 2286ef5f6272c5d2b6ac74a13ba1ce42f8116bed Mon Sep 17 00:00:00 2001 From: devfzn Date: Tue, 31 Oct 2023 18:42:25 -0300 Subject: [PATCH] =?UTF-8?q?DBA=20Seguridad=20y=20Optimizaci=C3=B3n=20MySQL?= =?UTF-8?q?=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Termino formación adicional MySQL --- 011_mysql/dba_seguridad_optimiz.md | 659 +++++++++++++++++- 011_mysql/imgs/graph_cost_query1.png | Bin 0 -> 34565 bytes 011_mysql/imgs/graph_cost_query2.png | Bin 0 -> 48500 bytes 011_mysql/imgs/graph_cost_query3.png | Bin 0 -> 41083 bytes 011_mysql/imgs/hash_table.svg | 254 +++++++ .../wb-visual-explain-hash-join-sakila.png | Bin 0 -> 7090 bytes 011_mysql/proyecto_scripts/manage_db.sh | 22 +- 7 files changed, 903 insertions(+), 32 deletions(-) create mode 100644 011_mysql/imgs/graph_cost_query1.png create mode 100644 011_mysql/imgs/graph_cost_query2.png create mode 100644 011_mysql/imgs/graph_cost_query3.png create mode 100644 011_mysql/imgs/hash_table.svg create mode 100644 011_mysql/imgs/wb-visual-explain-hash-join-sakila.png diff --git a/011_mysql/dba_seguridad_optimiz.md b/011_mysql/dba_seguridad_optimiz.md index b9e00bc..35aff93 100644 --- a/011_mysql/dba_seguridad_optimiz.md +++ b/011_mysql/dba_seguridad_optimiz.md @@ -61,36 +61,35 @@ systemctl stop mysql La puesta a punto de MySQL se puede realizar de 4 maneras -### 1. Esquemas, índices, variables interdas de MySQL (mysqld), Hardware y S.O. +### Esquemas, índices, variables internas de MySQL (mysqld), Hardware y S.O. - - HARDWARE - - Utilizar sistemas operativos de 64-bits. Mysql puede usar procesamiento - en paralelo y consumir toda la memoria - - Configuración de RAM. Parametro que permite indicar el máximo de memoria - disponible para los procesos. No se recomienda exceder el 50% - - Dependiendo de la forma con la que se trabaje la base de datos va a variar - su consumo de memoria - - El tipo del disco: HDD, SSD, NVME - - Conexión SATA, SAS, M2, PCIe. - - Uso del controlador de disco **RAID** (0, 1, 5 y 10) para la seguridad - de los datos - - **RAID 0**: Divide los datos en dos HD diferentes, y actuan como un - solo disco a nivel de S.O - - **RAID 1**: Uno de los HD es copia del otro, y lo que realize en uno - se replica automáticamente en el otro - - **RAID 5**: Divide los datos en más de dos HD diferentes, y actuan - como un solo disco a nivel de S.O - - **RAID 10**: Los discos tiene ***espejos***, y lo que realize en uno - se replica automáticamente en el otro - - **RAID 1 y 10**: Utilizan mas espacio producto de la redundancia, pero - son mas seguros por tener backup disponible +#### HARDWARE +- Utilizar sistemas operativos de 64-bits. Mysql puede usar procesamiento +en paralelo y consumir toda la memoria +- Configuración de RAM. Parametro que permite indicar el máximo de memoria +disponible para los procesos. No se recomienda exceder el 50% +- Dependiendo de la forma con la que se trabaje la base de datos va a variar +su consumo de memoria +- El tipo del disco: HDD, SSD, NVME +- Conexión SATA, SAS, M2, PCIe. +- Uso del controlador de disco **RAID** (0, 1, 5 y 10) para la seguridad +de los datos + - **RAID 0**: Divide los datos en dos HD diferentes, y actuan como un + solo disco a nivel de S.O + - **RAID 1**: Uno de los HD es copia del otro, y lo que realize en uno + se replica automáticamente en el otro + - **RAID 5**: Divide los datos en más de dos HD diferentes, y actuan + como un solo disco a nivel de S.O + - **RAID 10**: Los discos tiene ***espejos***, y lo que realize en uno + se replica automáticamente en el otro + - **RAID 1 y 10**: Utilizan mas espacio producto de la redundancia, pero + son mas seguros por tener backup disponible > RAID [wiki](https://en.wikipedia.org/wiki/Standard_RAID_levels) Nested RAID [wiki](https://en.wikipedia.org/wiki/Nested_RAID_levels) RAID [ArchWiki](https://wiki.archlinux.org/title/RAID) -
RAID #### RAID 0 @@ -409,3 +408,617 @@ LOCK instance for backup; UNLOCK INSTANCE; ``` + +## Plan de ejecución + +Tomar como ejemplo esta consulta + +```sql +SELECT P.codigo, YEAR(F.fecha) as "Año", SUM(I.cantidad) AS "Cantidad" +FROM productos P +INNER JOIN items I + ON P.codigo = I.codigo +INNER JOIN facturas F + ON I.numero = F.numero +GROUP BY P.codigo, YEAR(F.fecha) +ORDER BY P.codigo,YEAR(F.fecha); +``` + +### EXPLAIN + +```sql +EXPLAIN FORMAT=JSON +SELECT P.codigo, YEAR(F.fecha) as "Año", SUM(I.cantidad) AS "Cantidad" +FROM productos P +INNER JOIN items I + ON P.codigo = I.codigo +INNER JOIN facturas F + ON I.numero = F.numero +GROUP BY P.codigo, YEAR(F.fecha) +ORDER BY P.codigo,YEAR(F.fecha)\G; +``` + +
Salida + +```json +*************************** 1. row *************************** +EXPLAIN: { + "query_block": { + "select_id": 1, + "filesort": { + "sort_key": "P.codigo, year(F.fecha)", + "temporary_table": { + "nested_loop": [ + { + "table": { + "table_name": "P", + "access_type": "index", + "possible_keys": ["PRIMARY"], + "key": "PRIMARY", + "key_length": "42", + "used_key_parts": ["codigo"], + "rows": 35, + "filtered": 100, + "using_index": true + } + }, + { + "table": { + "table_name": "I", + "access_type": "ref", + "possible_keys": ["PRIMARY", "codigo"], + "key": "codigo", + "key_length": "42", + "used_key_parts": ["codigo"], + "ref": ["empresa.P.codigo"], + "rows": 3329, + "filtered": 100 + } + }, + { + "table": { + "table_name": "F", + "access_type": "eq_ref", + "possible_keys": ["PRIMARY"], + "key": "PRIMARY", + "key_length": "4", + "used_key_parts": ["numero"], + "ref": ["empresa.I.numero"], + "rows": 1, + "filtered": 100 + } + } + ] + } + } + } +} +``` + +
+ +### ANALYZE + +```sql +ANALYZE FORMAT=JSON +SELECT P.codigo, YEAR(F.fecha) as "Año", SUM(I.cantidad) AS "Cantidad" +FROM productos P +INNER JOIN items I + ON P.codigo = I.codigo +INNER JOIN facturas F + ON I.numero = F.numero +GROUP BY P.codigo, YEAR(F.fecha) +ORDER BY P.codigo,YEAR(F.fecha)\G; +``` + +
Salida + +```json +*************************** 1. row *************************** +ANALYZE: { + "query_optimization": { + "r_total_time_ms": 0.587444996 + }, + "query_block": { + "select_id": 1, + "r_loops": 1, + "r_total_time_ms": 7608.934695, + "filesort": { + "sort_key": "P.codigo, year(F.fecha)", + "r_loops": 1, + "r_total_time_ms": 0.187826969, + "r_used_priority_queue": false, + "r_output_rows": 155, + "r_buffer_size": "6Kb", + "r_sort_mode": "sort_key,rowid", + "temporary_table": { + "nested_loop": [ + { + "table": { + "table_name": "P", + "access_type": "index", + "possible_keys": ["PRIMARY"], + "key": "PRIMARY", + "key_length": "42", + "used_key_parts": ["codigo"], + "r_loops": 1, + "rows": 35, + "r_rows": 35, + "r_table_time_ms": 0.15660869, + "r_other_time_ms": 0.195472139, + "filtered": 100, + "r_filtered": 100, + "using_index": true + } + }, + { + "table": { + "table_name": "I", + "access_type": "ref", + "possible_keys": ["PRIMARY", "codigo"], + "key": "codigo", + "key_length": "42", + "used_key_parts": ["codigo"], + "ref": ["empresa.P.codigo"], + "r_loops": 35, + "rows": 3329, + "r_rows": 6098.6, + "r_table_time_ms": 2265.69671, + "r_other_time_ms": 306.4226053, + "filtered": 100, + "r_filtered": 100 + } + }, + { + "table": { + "table_name": "F", + "access_type": "eq_ref", + "possible_keys": ["PRIMARY"], + "key": "PRIMARY", + "key_length": "4", + "used_key_parts": ["numero"], + "ref": ["empresa.I.numero"], + "r_loops": 213451, + "rows": 1, + "r_rows": 1, + "r_table_time_ms": 2630.998751, + "r_other_time_ms": 2405.134662, + "filtered": 100, + "r_filtered": 100 + } + } + ] + } + } + } +} +``` + +
+ +## Indices + +Facilitan la búsqueda de datos dentro de las tablas (Diccionario). Si no se +cuenta con una estructura de índices se debe recorrer toda la tabla hasta +encontrar el registro + +### Indices en MyISAM + +| ID | TITULO | AUTOR | +| - | - | - | +| 23-4567-8 | Cien años de soledad | Gabriel García Márquez | +| 12-3456-7 | El Túnel | Ernesto Sábato | +| 89-0123-4 | 1984 | George Orwell | + +El índice crea estas tablas de referencia + +| TITULO | Ref | +| - | - | +| 1984 | {3} | +| Cien años de soledad | {1} | +| El Túnel | {2} | + +| AUTOR | Ref | +| - | - | +| Gabriel García Márquez | {1} | +| George Orwell | {3} | +| Ernesto Sábato | {2} | + +| ID | Ref | +| - | - | +| 12-3456-7 | {2} | +| 23-4567-8 | {1} | +| 89-0123-4 | {3} | + +- Siempre que se modifique una tabla, todos los índices se actualizan +- A mayor cantidad de datos, mayor tiempo de ejecución +- Crea una estructura separada para índices PK y no PK +- La columna inicial del índice es ordenada y toma como referencia la +posición de la fila de la tabla original +- Implenta índices **HASH** y **B-TREE** + +### Indices en InnoDB + +La clave primaria es el índice + +| ID | TITULO | AUTOR | +| - | - | - | +| **23-4567-8** | Cien años de soledad | Gabriel García Márquez | +| **12-3456-7** | El Túnel | Ernesto Sábato | +| **89-0123-4** | 1984 | George Orwell | + +Si se utiliza otro campo como índice, la referencia de este va a ser la clave +primaria + +| TITULO | Ref | +| - | - | +| 1984 | 89-0123-4 | +| Cien años de soledad | 23-4567-8 | +| El Túnel | 12-3456-7 | + +| AUTOR | Ref | +| - | - | +| Gabriel García Márquez | 23-4567-8 | +| George Orwell | 89-0123-4 | +| Ernesto Sábato | 12-3456-7 | + +- La tabla se ordena automáticamente con la clave primaria +- Tiene mayor desempeño en consultas buscando a través de clave primaria +- En el caso de buscar en un campo que no seas llave primaria, el costo es el +mismo que usando MyISAM +- La tabla esta ordenada con la PK por defecto +- Los índices que no son PK poseen estructuras separadas y toman como +referencia el valor de la PK +- Solo trabaja con **B-TREE** + +> **HASH** y **B-TREE** son algoritmos de busqueda en listas ordenadas + +## Arbol Binario + +- Valores a la izquierda del nodo son menores +- Valores a la derecha del nodo son mayores + +```mermaid +graph TD + idA((27)) --> idB1((13)) + idA --> idB2((35)) + idB1 --> idC1((26)) + idB2 --> idC3((33)) + idB2 --> idC4((39)) +``` + +Consideraciones sobre **B-TREE** + +- Balanced - Binary Tree +- +4 Mil millones de registros en 32 niveles + + +```mermaid +graph TD + iA((.)) --> iB1((.)) + iA((.)) --> iB2((.)) + iB1((.)) --> iC1((.)) + iB1((.)) --> iC2((.)) + iB2((.)) --> iC3((.)) + iB2((.)) --> iC4((.)) + iC1((.)) --> iD1((.)) + iC1((.)) --> iD2((.)) + iC1((.)) --> iD3((.)) + iC1((.)) --> iD4((.)) + iC2((.)) --> iD5((.)) + iC2((.)) --> iD6((.)) + iC2((.)) --> iD7((.)) + iC2((.)) --> iD8((.)) + iC3((.)) --> iD9((.)) + iC3((.)) --> iD10((.)) + iC3((.)) --> iD11((.)) + iC3((.)) --> iD12((.)) + iC4((.)) --> iD13((.)) + iC4((.)) --> iD14((.)) + iC4((.)) --> iD15((.)) + iC4((.)) --> iD16((.)) +``` + +Ejemplo + +```mermaid +%%{init: {'theme': 'dark','themeVariables': {'clusterBkg': '#2b2f38'}}}%% +graph TD + +subgraph " " +A1 ---> B +A2 ---> C +A3 ---> D +subgraph A[" "] +direction TB +A1[256] +A2[521] +A3[768] +end +subgraph B[" "] +direction TB +B11[64] +B12[128] +B13[192] +end +subgraph C[" "] +direction TB +B21[256] +B22[521] +B23[768] +end +subgraph D[" "] +direction TB +B31[832] +B32[896] +B33[960] +end +end +``` + +## HASH + +Mapea datos grandes de tamaño variable en una "palabra" de tamaño fijo + +Ejemplo + +| Dato | Hash | +| - | - | +| ASDWERSDFJJKSHDFHKCUENVSIUUVSIUEURIHSCVIUHSER | 49855139 | +| KSDFHEHS | f9c0591e | +| 123IERUDJFH124IUDF26HD45 | f2188c85 | +| DF | 795741b2 | + +[](./imgs/hash_table.svg) + +## Creando indices + +```sql +ANALYZE FORMAT=JSON SELECT * FROM facturas WHERE fecha = '20170101'\G; +1 row in set (0.211 sec) +``` + +
Detalle ANALYZE + +```json +ANALYZE: { + "query_optimization": { + "r_total_time_ms": 0.228188173 + }, + "query_block": { + "select_id": 1, + "r_loops": 1, + "r_total_time_ms": 208.0312466, + "nested_loop": [ + { + "table": { + "table_name": "facturas", + "access_type": "ALL", + "r_loops": 1, + "rows": 87768, + "r_rows": 87877, + "r_table_time_ms": 159.3170115, + "r_other_time_ms": 48.68916427, + "filtered": 100, + "r_filtered": 0.08420861, + "attached_condition": "facturas.FECHA_VENTA = DATE'2017-01-01'" + } + } + ] + } +} +``` + +
+ +#### Agregando indice `fecha` + +```sql +ALTER TABLE facturas ADD INDEX(fecha_venta); + +ANALYZE FORMAT=JSON SELECT * FROM facturas WHERE fecha = '20170101'\G; +1 row in set (0.004 sec) +``` + +
Detalle ANALYZE + +```json +ANALYZE: { + "query_optimization": { + "r_total_time_ms": 0.383672043 + }, + "query_block": { + "select_id": 1, + "r_loops": 1, + "r_total_time_ms": 1.303775168, + "nested_loop": [ + { + "table": { + "table_name": "facturas", + "access_type": "ref", + "possible_keys": ["FECHA_VENTA"], + "key": "FECHA_VENTA", + "key_length": "4", + "used_key_parts": ["FECHA_VENTA"], + "ref": ["const"], + "r_loops": 1, + "rows": 74, + "r_rows": 74, + "r_table_time_ms": 1.180700563, + "r_other_time_ms": 0.099922552, + "filtered": 100, + "r_filtered": 100 + } + } + ] + } +} +``` + +
+ +#### Quitando el índice + +```sql +ALTER TABLE facturas DROP INDEX(fecha_venta); + +ANALYZE FORMAT=JSON SELECT * FROM facturas WHERE fecha = '20170101'\G; +1 row in set (0.180 sec) +``` + +
Detalle ANALYZE + +```json +ANALYZE: { + "query_optimization": { + "r_total_time_ms": 0.192326251 + }, + "query_block": { + "select_id": 1, + "r_loops": 1, + "r_total_time_ms": 177.6817744, + "nested_loop": [ + { + "table": { + "table_name": "facturas", + "access_type": "ALL", + "r_loops": 1, + "rows": 87768, + "r_rows": 87877, + "r_table_time_ms": 135.9970415, + "r_other_time_ms": 41.66515984, + "filtered": 100, + "r_filtered": 0.08420861, + "attached_condition": "facturas.FECHA_VENTA = DATE'2017-01-01'" + } + } + ] + } +} +``` + +
+ + +### Plan de ejecución gráfico en Workbench + +Ejemplo + +[](./imgs/wb-visual-explain-hash-join-sakila.png) + +```sql +SELECT P.codigo_del_producto, I.cantidad FROM tabla_de_productos P +INNER JOIN items_facturas I +ON P.codigo_del_producto = I.codigo_del_producto; +``` + +[](./imgs/graph_cost_query1.png) + +```sql +SELECT P.codigo_del_producto, YEAR(F.fecha_venta) AS "AÑO", I.cantidad +FROM tabla_de_productos P +INNER JOIN items_facturas I +ON P.codigo_del_producto = I.codigo_del_producto +INNER JOIN facturas F ON I.numero = F.numero; +``` + +[](./imgs/graph_cost_query2.png) + +Sin índices ni claves primarias + +```sql +SELECT P.codigo_del_producto, YEAR(F.fecha_venta) AS "AÑO", I.cantidad +FROM tabla_de_productos2 P +INNER JOIN items_facturas2 I +ON P.codigo_del_producto = I.codigo_del_producto +INNER JOIN facturas2 F ON I.numero = F.numero; +``` + +[](./imgs/graph_cost_query3.png) + +### mysqslap + +`mysqslap` o `mariadb-slap` + +```txt +mariadb-slap -u -p -h -P 3306 \ + --concurrency=100 --iterations=10 --create-schema=jugos2 \ + --query="SELECT * FROM facturas WHERE fecha_venta='20170101'"; +Enter password: +Benchmark + Average number of seconds to run all queries: 15.112 seconds + Minimum number of seconds to run all queries: 15.022 seconds + Maximum number of seconds to run all queries: 15.287 seconds + Number of clients running queries: 100 + Average number of queries per client: 1 +``` + +## Administración de usuarios + +Esto se puede realizar desde Workbench: + +`-> Pestaña Administración -> Users and Privileges` Donde se pueden escoger +los roles que se quieran asignar al usuario + +### User Administrador Manual + +```sql +CREATE USER 'dbadmin-user' identified by 'dbadmin-password'; +GRANT USAGE ON *.* TO `%`@`%` IDENTIFIED BY 'dbadmin-password'; +GRANT ALL PRIVILEGES ON *.* TO 'dbadmin-user'@`%` WITH GRANT OPTION; +FLUSH PRIVILEGES; +``` + +### Usuario con privilegios para schema `schema1`, uso local + +```sql +CREATE USER 'basic-admin' identified by 'basic-admin-password'; +GRANT USAGE ON 'schema1'.* TO 'basic-admin'@'localhost' IDENTIFIED BY 'basic-admin-password'; +GRANT ALL PRIVILEGES ON 'schema1'.* TO 'basic-admin'@`%`; +FLUSH PRIVILEGES; +``` + +### Usuario con privilegios limitados + +`SELECT`, `UPDATE`, `INSERT`, `DELETE`, `EXECUTE`, `LOCK TABLES`, `CREATE TEMPORARY TABLES` para schema `schema1`, uso local: + +```sql +CREATE USER 'limited-user' identified by 'limited-user-password'; +GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLES, +EXECUTE ON 'schema1'.* TO 'limited-user'@'localhost' +IDENTIFIED BY 'limited-user-password'; +FLUSH PRIVILEGES; +``` + +### Usuario con privilegios solo lectura + +Para todas los schemas con acceso remoto: + +```sql +CREATE USER 'limited-user' identified by 'limited-user-password'; +GRANT SELECT, EXECUTE ON *.* TO 'limited-user'@'%' +IDENTIFIED BY 'limited-user-password'; +FLUSH PRIVILEGES; +``` + +### Backup user + +```sql +CREATE USER 'backup-user' identified by 'backup-user-password'; +GRANT SELECT, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backup-user'@'%' +IDENTIFIED BY 'backup-user-password'; +FLUSH PRIVILEGES; +``` + +### Limitando accesos remotos + +- `192.168.1.%`: 192.168.1.0 - 192.168.1.255 +- `192.168.1.1_`: 192.168.1.100 - 192.168.1.255 +- `cliente_.empresa.com`: clientXY.empresa.com + +### Revocar todos los privilegios + +```sql +SHOW GRANTS FOR 'usuario'@'localhost'; +REVOKE ALL PRIVILEGES, GRATN OPTION FROM 'user'@'localhost'; +``` diff --git a/011_mysql/imgs/graph_cost_query1.png b/011_mysql/imgs/graph_cost_query1.png new file mode 100644 index 0000000000000000000000000000000000000000..65ff90f107ccf398e62f0c287370182730d871a4 GIT binary patch literal 34565 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 P0SG)@{an^LB{Ts5s-8WI literal 0 HcmV?d00001 diff --git a/011_mysql/imgs/graph_cost_query2.png b/011_mysql/imgs/graph_cost_query2.png new file mode 100644 index 0000000000000000000000000000000000000000..d8538aa9c2284b83dec85d7694a69e67d08da08b GIT binary patch literal 48500 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 z
    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 vF}h5^gl)Psk0Y-y8vt1<#1otzOgcz#lh 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 R{g=;6T3kV_M&wuE{{x{W?jZmG literal 0 HcmV?d00001 diff --git a/011_mysql/imgs/graph_cost_query3.png b/011_mysql/imgs/graph_cost_query3.png new file mode 100644 index 0000000000000000000000000000000000000000..db905f44f45717af39d96f7c4d2994f94c48667c GIT binary patch literal 41083 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 literal 0 HcmV?d00001 diff --git a/011_mysql/imgs/hash_table.svg b/011_mysql/imgs/hash_table.svg new file mode 100644 index 0000000..73a2b83 --- /dev/null +++ b/011_mysql/imgs/hash_table.svg @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + keys + + + + + John Smith + + + + + + + Lisa Smith + + + + + + + Sam Doe + + + + + + + Sandra Dee + + + + + + + Ted Baker + + + + + + + + + + + + buckets + + + + + 000 + + + + + + 001 + + + + + + 002 + + + + + : + : + + + + 151 + + + + + + 152 + + + + + + 153 + + + + + + 154 + + + + + : + : + + + + 253 + + + + + + 254 + + + + + + 255 + + + + + + + + + + + entries + + + + + + + Lisa Smith + + 521-8976 + + + + + + John Smith + + 521-1234 + + + + + + Sandra Dee + + 521-9655 + + + + + + Ted Baker + + 418-4165 + + + + + + Sam Doe + + 521-5030 + + + + + + diff --git a/011_mysql/imgs/wb-visual-explain-hash-join-sakila.png b/011_mysql/imgs/wb-visual-explain-hash-join-sakila.png new file mode 100644 index 0000000000000000000000000000000000000000..801c6dde77af36bfb398b4f372ad0260c51730b4 GIT binary patch literal 7090 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/dev/null done < $BASEDIR/.env -connect_db(){ +maria_connect(){ echo "mariadb -u ${DBUSER} -p${DBPASS} -h ${DBADDR%%:*} ${DBNAME} -P ${DBADDR##*:}" } +connect_db(){ + $(maria_connect) +} + create_tables(){ - $(connect_db) < ./create_tables.sql + $(maria_connect) < ./create_tables.sql } populate_tables(){ - $(connect_db) < ./populate_tables.sql + $(maria_connect) < ./populate_tables.sql } import_records(){ - $(connect_db) < ./import_records.sql + $(maria_connect) < ./import_records.sql } re_create_tables(){ - $(connect_db) < ./re_create_tables.sql + $(maria_connect) < ./re_create_tables.sql } create_f_sp(){ - $(connect_db) < ./funcs_sp.sql + $(maria_connect) < ./funcs_sp.sql } create_triggers(){ - $(connect_db) < ./triggers.sql + $(maria_connect) < ./triggers.sql } deactivate_session(){ unset DBNAME DBUSER DBPASS DBADDR PEPPER - unset VersionStr BASEDIR - unset connect_db create_populate_tables + unset VersionStr BASEDIR connect_db + unset maria_connect create_populate_tables unset populate_tables import_records unset re_create_tables create_f_sp unset create_triggers deactivate_session