-- Connect as rootmysql -u root -p-- Create database userCREATE USER 'smaf_user'@'localhost' IDENTIFIED BY 'secure_password_here';-- Grant privilegesGRANT ALL PRIVILEGES ON inapesca_cripsc.* TO 'smaf_user'@'localhost';-- For remote access (if needed)CREATE USER 'smaf_user'@'%' IDENTIFIED BY 'secure_password_here';GRANT ALL PRIVILEGES ON inapesca_cripsc.* TO 'smaf_user'@'%';-- Apply changesFLUSH PRIVILEGES;
Use a strong password for the database user. Never use default or easily guessable passwords in production.
-- Travel authorizationscrip_comision - CVL_OFICIO (PK, FK): Office type - FOLIO (PK): Folio number - FECHA_SOL: Request date - FECHA_AUTORIZA: Authorization date - CLV_DEP (FK): Department - CLV_AREA (FK): Area - CLV_PROY (FK): Project - LUGAR: Destination - FECHA_I: Start date - FECHA_F: End date - OBJETIVO: Objective - CLV_CLASE: Transportation class - ESTATUS: Status-- Budget line itemscrip_partidas - ID (PK): Line item code - DESCRIPCION: Description - PADRE: Parent line item - PERIODO: Fiscal period - ESTATUS: Status
INSERT INTO crip_roles VALUES ('ADMGR', 'ADMINISTRADOR GENERAL', 'ROL CREADO PARA EL DBA - SYSTEM'), ('ADMINP', 'ADMINISTRADOR INAPESCA', 'ROL CREADO PARA ELADMINISTRADOR GRAL DE INAPESCA'), ('ADMCRIPSC', 'ADMINISTRADOR CRIP SALINACRUZ', 'ROL CREADO PARA EL ADMINISTRADOR DELCRIP SALINA CRUZ'), ('JFCCRIPSC', 'JEFE DE CENTRO SALINA CRUZ', 'ROL CREADO PARA JEFE DE CENTRO SALINA CRUZ'), ('INVEST', 'INVESTIGADOR', 'ROL CREADO PARA INVESTIGADORES (USUARIOS SIN PRIVILEGIOS DE ADMINISTRADOR)');
INSERT INTO crip_partidas VALUES ('2000', 'MATERIALES Y SUMINISTROS', '0', 1, '2015'), ('3000', 'SERVICIOS', '0', 1, '2015'), ('37504', 'VIÁTICOS NACIONALES PARA SERVIDORES PÚBLICOS EN EL DESEMPEÑO DE FUNCIONES OFICIALES', '3700', 1, '2015'), -- ... many more line items
INSERT INTO crip_proy VALUES ('CRIPSC000', 'ADMINISTRACION', 'MOPO670124CX7', 'ADMINISTRACION', '2014', 1, 1, '2014-01-01', '2014-01-01', 'CRIP-SC', 'CRIPSC01', 1000000, 100000), ('CRIPSC002', 'COORDINACION DE LA INVESTIGACION Y ATENCION AL SECTOR', 'MOPO670124CX7', 'COORDINACION DE LA INVESTIGACION Y ATENCION AL SECTOR', '2014', 1, 1, '2014-01-01', '2014-01-01', 'CRIP-SC', 'CRIPSC08', 1000000, 100000);
-- Enable slow query logSET GLOBAL slow_query_log = 'ON';SET GLOBAL long_query_time = 2;-- Analyze slow queriesSELECT * FROM mysql.slow_log ORDER BY query_time DESC LIMIT 10;-- Show query execution planEXPLAIN SELECT * FROM crip_comision WHERE ESTATUS = 1;
-- Check missing indexesSELECT * FROM information_schema.statisticsWHERE table_schema = 'inapesca_cripsc'ORDER BY table_name, index_name;-- Add index if neededCREATE INDEX idx_comision_fecha ON crip_comision(FECHA_SOL, FECHA_AUTORIZA);-- Remove unused indexesDROP INDEX index_name ON table_name;
-- Read-only user for reportsCREATE USER 'smaf_readonly'@'localhost' IDENTIFIED BY 'password';GRANT SELECT ON inapesca_cripsc.* TO 'smaf_readonly'@'localhost';-- Application user with limited permissionsCREATE USER 'smaf_app'@'localhost' IDENTIFIED BY 'password';GRANT SELECT, INSERT, UPDATE ON inapesca_cripsc.* TO 'smaf_app'@'localhost';REVOKE DELETE ON inapesca_cripsc.* FROM 'smaf_app'@'localhost';
-- Check user privilegesSELECT user, host, Select_priv, Insert_priv, Update_priv, Delete_priv FROM mysql.user;-- Check database privilegesSELECT * FROM mysql.db WHERE Db = 'inapesca_cripsc';-- Remove anonymous usersDELETE FROM mysql.user WHERE User='';FLUSH PRIVILEGES;
4
Encrypt Sensitive Data
Use application-level encryption for:
Passwords (bcrypt or similar)
Personal identification numbers (RFC)
Bank account information
Confidential project data
5
Network Security
-- Restrict remote accessDELETE FROM mysql.user WHERE Host='%' AND User='root';-- Allow only specific hostsGRANT ALL PRIVILEGES ON inapesca_cripsc.* TO 'smaf_user'@'192.168.1.100' IDENTIFIED BY 'password';FLUSH PRIVILEGES;
-- Check current charsetSHOW VARIABLES LIKE 'character_set%';-- Set UTF-8 for connectionSET NAMES 'utf8';-- Convert table charsetALTER TABLE crip_usuarios CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Slow query performance
Symptoms: Long query execution times, timeout errorsSolutions:
-- Check slow queriesSHOW PROCESSLIST;-- Kill long-running queryKILL query_id;-- Add missing indexesANALYZE TABLE crip_comision;EXPLAIN SELECT * FROM crip_comision WHERE FECHA_SOL > '2024-01-01';-- Increase buffer pool size in my.iniinnodb_buffer_pool_size = 2G
Connection pool exhaustion
Symptoms: “Too many connections” errorSolutions:
-- Check current connectionsSHOW PROCESSLIST;-- Increase max connectionsSET GLOBAL max_connections = 500;-- Check sleeping connectionsSELECT * FROM information_schema.processlist WHERE command = 'Sleep';-- Set connection timeoutSET GLOBAL wait_timeout = 300;SET GLOBAL interactive_timeout = 300;
-- Update partidas presupuestales for new yearUPDATE crip_partidas SET PERIODO = '2025' WHERE PERIODO = '2024';-- Archive previous year's commissionsCREATE TABLE crip_comision_2024 AS SELECT * FROM crip_comision WHERE YEAR(FECHA_SOL) = 2024;-- Update project budgetsUPDATE crip_proy SET RECURSO = new_budget, RESTANTE = new_budget WHERE PERIODO = '2025';