Saltar al contenido principal

Problemas de base de datos MySQL

Muchos plugins de Minecraft (como LuckPerms, CoreProtect, EssentialsX, ShopGUI+, etc.) necesitan una base de datos MySQL para persistir datos. Esta guía cubre los errores más frecuentes y cómo resolverlos.


Crear una base de datos en SkyPanel

Antes de que un plugin pueda conectarse a MySQL, necesitas crear la base de datos desde el panel:

  1. Ve a tu servidor en panel.mixelnodes.com
  2. Haz clic en Databases en el menú lateral
  3. Haz clic en New Database
  4. Asigna un nombre descriptivo (ej: luckperms, coreprotect)
  5. Haz clic en Create

SkyPanel te mostrará:

  • Host: la dirección del servidor MySQL (ej: mysql.mixelnodes.com)
  • Port: normalmente 3306
  • Database: el nombre de tu base de datos
  • Username: generado automáticamente
  • Password: generado automáticamente

Copia estos datos y configúralos en el plugin correspondiente.


Error: "Access denied for user"

Síntoma en logs

[ERROR] Access denied for user 'username'@'host' (using password: YES)

Causas y soluciones

1. Credenciales incorrectas en la configuración del plugin

Compara cuidadosamente las credenciales que SkyPanel muestra con lo que tienes en la configuración del plugin. Los errores más comunes son:

  • Un espacio extra al copiar la contraseña
  • Confundir el nombre de la base de datos con el usuario
  • Haber cambiado la contraseña y olvidar actualizarla en el plugin

2. La base de datos fue eliminada y recreada

Cuando creas una nueva base de datos en SkyPanel, las credenciales cambian. Actualiza la configuración del plugin con las nuevas credenciales.

3. El plugin usa credenciales de un servidor anterior

Si migraste el servidor o clonaste la configuración, puede que las credenciales sean de otra instancia. Genera nuevas desde SkyPanel.


Síntoma en logs

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

o

[ERROR] Can't connect to MySQL server on 'host' (Connection refused)

Causas y soluciones

1. Host incorrecto

El host de MySQL en MixelNodes no es localhost — es una dirección externa que SkyPanel te proporciona en la sección Databases. Normalmente tiene el formato:

mysql.mixelnodes.com
# o
127.0.0.1:XXXX

Copia el host exactamente como aparece en el panel.

2. Puerto incorrecto

Verifica que usas el puerto que SkyPanel indica. En MixelNodes, el puerto de MySQL puede ser diferente al estándar 3306.

3. El servidor MySQL está temporalmente inaccesible

Ocurre raramente pero puede suceder durante mantenimientos. Si el error es repentino y todo estaba funcionando antes:

  1. Reinicia el servidor de Minecraft
  2. Si persiste, contacta con soporte — puede ser un problema del nodo

4. Firewall / red del servidor

Si ejecutas MySQL en un servidor externo (no el de MixelNodes), verifica que el firewall permite conexiones desde la IP del nodo de MixelNodes.


Error: "Too many connections"

Síntoma en logs

[ERROR] Too many connections

Causa

MySQL ha alcanzado el límite máximo de conexiones simultáneas. Esto puede ocurrir si:

  • Tienes muchos plugins conectados a la misma base de datos simultáneamente
  • Un plugin no cierra las conexiones correctamente (connection leak)
  • El servidor se reinicia muchas veces rápido y las conexiones antiguas no se liberan

Solución

1. Configura un pool de conexiones en el plugin

La mayoría de plugins modernos (LuckPerms, CoreProtect, etc.) tienen opciones de pool de conexiones. Busca en la configuración del plugin opciones como:

storage-options:
maximum-pool-size: 10 # Máximo de conexiones abiertas
minimum-idle: 2 # Mínimo de conexiones en espera
maximum-lifetime: 1800000 # Tiempo máximo de vida de una conexión (ms)
connection-timeout: 5000 # Timeout al abrir una conexión (ms)

Reducir maximum-pool-size disminuye el número de conexiones simultáneas.

2. Reinicia el servidor

Si el problema es un connection leak, reiniciar el servidor cierra todas las conexiones huérfanas.

3. Contacta con soporte

Si el problema persiste, el límite de conexiones de la base de datos puede necesitar ajustarse en el servidor MySQL de MixelNodes.


Error: "Unknown database" / "Database doesn't exist"

Síntoma en logs

[ERROR] Unknown database 'nombre_db'

Causa

La base de datos referenciada en la configuración del plugin no existe.

Solución

  1. Verifica en SkyPanel → Databases que la base de datos existe y tiene el nombre correcto
  2. Si la base de datos fue eliminada, créala de nuevo
  3. Copia el nombre exacto (distingue mayúsculas/minúsculas) en la configuración del plugin

Error: "Table doesn't exist" al arrancar un plugin

Síntoma en logs

[ERROR] Table 'database.tabla' doesn't exist

Causa

El plugin intenta usar una tabla que no se ha creado aún. Normalmente los plugins crean sus tablas automáticamente en el primer arranque, pero si algo falla durante ese proceso, las tablas pueden quedar a medias.

Solución

Opción 1 — Borrar y recrear la base de datos

Si no hay datos que conservar:

  1. Elimina la base de datos desde SkyPanel → Databases
  2. Crea una nueva con el mismo nombre
  3. Reinicia el servidor — el plugin creará las tablas de cero

Opción 2 — Crear la tabla manualmente (avanzado)

Algunos plugins publican los schemas SQL en su documentación. Puedes ejecutarlos manualmente con un cliente MySQL.


Gestión avanzada de bases de datos

Conectarse a la base de datos con un cliente externo

Puedes usar clientes como TablePlus, HeidiSQL, DBeaver o MySQL Workbench para conectarte directamente y ejecutar consultas SQL.

Usa los datos de conexión que aparecen en SkyPanel → Databases.

Precaución

Modificar las tablas manualmente puede corromper los datos del plugin. Solo hazlo si sabes lo que estás haciendo y tienes un backup reciente.

Hacer un backup manual de la base de datos

Desde la consola de SkyPanel (si tienes acceso SSH al nodo) o desde un cliente MySQL:

mysqldump -h HOST -P PUERTO -u USUARIO -p NOMBRE_DB > backup_$(date +%Y%m%d).sql

Guarda el archivo .sql en un lugar seguro. Para restaurarlo:

mysql -h HOST -P PUERTO -u USUARIO -p NOMBRE_DB < backup_20240115.sql

Resetear la base de datos de un plugin

Si quieres empezar de cero con un plugin (por ejemplo, resetear permisos de LuckPerms):

  1. Para el servidor
  2. Elimina la base de datos desde SkyPanel → Databases
  3. Crea una nueva con el mismo nombre o uno diferente (actualiza la config del plugin si cambias el nombre)
  4. Arranca el servidor — el plugin creará las tablas limpias

Plugins populares y su configuración MySQL

LuckPerms

# En plugins/LuckPerms/config.yml
storage-method: mysql

data:
address: HOST:PUERTO
database: NOMBRE_DB
username: USUARIO
password: CONTRASEÑA
pool-settings:
maximum-pool-size: 10
minimum-idle: 2
maximum-lifetime: 1800000
connection-timeout: 5000

CoreProtect

# En plugins/CoreProtect/config.yml
mysql: true
table-prefix: co_
host: HOST
port: PUERTO
database: NOMBRE_DB
username: USUARIO
password: CONTRASEÑA

EssentialsX

EssentialsX usa SQLite por defecto (archivo local). Si quieres usar MySQL, necesita el addon EssentialsX-MYSQL o configurar la opción correspondiente en su config.


Checklist de diagnóstico MySQL

Cuando un plugin no se conecta a MySQL, verifica en orden:

  • La base de datos existe en SkyPanel → Databases
  • El host es el que aparece en SkyPanel (no localhost)
  • El puerto es el que aparece en SkyPanel (no asumas que es 3306)
  • El nombre de usuario y contraseña son correctos (sin espacios)
  • El nombre de la base de datos es correcto (sensible a mayúsculas)
  • El plugin se reinició después de modificar la configuración
  • El servidor tiene conectividad a MySQL (prueba reiniCiando el servidor)