En: Automated MySQL backup script that extracts database credentials from wp-config.php Es: Script de copia de seguridad automatizado de MySQL que extrae las credenciales de la base de datos de wp-config.php
Script en Bash que automatiza la creación de backups de bases de datos MySQL para sitios WordPress. Extrae automáticamente las credenciales de conexión desde el archivo wp-config.php y genera un dump SQL completo con timestamp.
- 🔧 Extracción automática de credenciales desde wp-config.php
- 📅 Nombres con timestamp para organizar backups por fecha/hora
- 🛡️ Manejo robusto de errores con mensajes informativos colorizados
- 🔍 Validación de conexión antes del dump para detectar problemas
- ⚡ Opciones optimizadas de mysqldump para backups seguros y eficientes
- 🐳 Compatibilidad TCP explícita para evitar warnings de protocolo
- 📚 Documentación completa con docblocks en cada función
- Parsea múltiples formatos de wp-config.php con expresiones regulares robustas
- Maneja diferentes estilos de comillas y espaciado
- Separa automáticamente host:puerto en parámetros independientes
- Convierte
localhosta127.0.0.1para conexiones TCP limpias
--single-transaction: Garantiza consistencia de datos--routines --triggers: Incluye procedimientos almacenados y triggers--add-drop-table: Facilita restauración limpia--extended-insert: Inserts optimizados para archivos más pequeños--quick --lock-tables=false: Minimiza uso de memoria y bloqueos
mi_sitio_backup_20250813_142530.sql
Formato del nombre: {DB_NAME}_backup_{YYYYMMDD_HHMMSS}.sql
# Verificar que mysqldump esté instalado
which mysqldump
# Verificar permisos de lectura en wp-config.php
ls -la wp-config.php# 1. Descargar el script en la carpeta de WordPress
wget -O backup_mysql.sh "URL_DEL_GIST"
# 2. Dar permisos de ejecución
chmod +x backup_mysql.sh# Ejecutar backup
./backup_mysql.sh
# Ejecutar con output detallado
./backup_mysql.sh 2>&1 | tee backup.log=== INICIANDO BACKUP DE MYSQL ===
Extrayendo configuración de wp-config.php...
Líneas de configuración encontradas:
define( 'DB_NAME', 'mi_wordpress' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', 'mi_password' );
define( 'DB_HOST', 'localhost:3306' );
✓ Base de datos: 'mi_wordpress'
✓ Usuario: 'wp_user'
✓ Host: '127.0.0.1' (Puerto: 3306)
Nota: Cambiando localhost por 127.0.0.1 para forzar conexión TCP
Probando conexión a MySQL...
✓ Conexión a MySQL exitosa
Creando dump de la base de datos...
Archivo de destino: mi_wordpress_backup_20250813_142530.sql
✓ Backup creado exitosamente
✓ Archivo: mi_wordpress_backup_20250813_142530.sql
✓ Tamaño: 15M
=== BACKUP COMPLETADO ===// Formato estándar
define( 'DB_HOST', 'localhost:3306' );
// Con comillas simples
define('DB_HOST', 'localhost:3306');
// Sin espacios
define("DB_HOST","localhost:3306");
// Solo host (puerto 3306 por defecto)
define( 'DB_HOST', 'localhost' );# Verificar que el script esté en la carpeta correcta
ls -la wp-config.php backup_mysql.sh# Ubuntu/Debian
sudo apt-get install mysql-client
# CentOS/RHEL
sudo yum install mysql
# macOS
brew install mysql-client# Verificar servicio MySQL
sudo systemctl status mysql
# Probar conexión manual
mysql -h 127.0.0.1 -P 3306 -u usuario -p base