Curso de MySQL

Configurar contraseñas y permisos en phpMyAdmin

Por Víctor Peña · Publicado el

Configuración de contraseñas y permisos en phpMyAdmin

Hola, ¿cómo están? Continuando con el curso de MySQL, hoy llevamos a la práctica lo que vimos sobre seguridad, esta vez desde phpMyAdmin.

Es la herramienta que vas a encontrar en casi cualquier hosting compartido, así que conviene manejarla.

¡Empecemos!

Entrar a phpMyAdmin

Con el servidor iniciado desde XAMPP o Laragon:

localhost/phpmyadmin

En una instalación local recién hecha entra directo, sin pedir credenciales, porque root no tiene contraseña. Eso es justamente lo primero que vamos a cambiar.

Cambiar la contraseña de root

  1. En el menú superior, entra a la pestaña Cuentas de usuario.
  2. Localiza la fila de root con host localhost.
  3. Pulsa Editar privilegios.
  4. Ve a la pestaña Cambiar contraseña.
  5. Escribe la nueva contraseña dos veces y pulsa Continuar.

Al confirmar, phpMyAdmin va a dejar de funcionar y mostrará un error de acceso denegado. Es normal: la herramienta sigue intentando entrar con la contraseña vacía.

Arreglar phpMyAdmin tras cambiar la contraseña

Este paso desconcierta a mucha gente, así que vamos con detalle.

Abre el archivo de configuración de phpMyAdmin. En XAMPP está en:

C:\xampp\phpMyAdmin\config.inc.php

Busca estas líneas:

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

Y ponle la contraseña que definiste:

$cfg['Servers'][$i]['password'] = 'tu-nueva-clave';

Guarda y recarga. Ya vuelve a entrar.

La alternativa recomendable

En lugar de guardar la contraseña en el archivo, puedes hacer que phpMyAdmin te la pida:

$cfg['Servers'][$i]['auth_type'] = 'cookie';

Con cookie aparece una pantalla de acceso. Es más seguro, sobre todo si no eres el único que usa esa computadora.

Crear un usuario para la aplicación

Recordando el principio del mínimo privilegio, no queremos que nuestro sistema use root.

  1. Cuentas de usuarioAgregar cuenta de usuario.
  2. Rellena los datos de acceso:
    • Nombre de usuario: app_tienda
    • Nombre de host: elige Local en el desplegable, que equivale a localhost.
    • Contraseña: usa el botón Generar para una aleatoria, y cópiala antes de guardar.
  3. En Base de datos para la cuenta de usuario, marca la opción de otorgar todos los privilegios sobre una base con el mismo nombre solo si eso es lo que quieres. Normalmente conviene dejarlo sin marcar y asignar permisos después.
  4. En Privilegios globales, no marques nada. Los privilegios globales aplican a todas las bases de datos.
  5. Pulsa Continuar.

Asignar permisos sobre una base concreta

Con el usuario ya creado:

  1. Cuentas de usuarioEditar privilegios en la fila del usuario.
  2. Pestaña Base de datos.
  3. Selecciona la base a la que debe acceder y pulsa Continuar.
  4. Ahora marca solo lo necesario. Para una aplicación web típica:
    • SELECT
    • INSERT
    • UPDATE
    • DELETE
  5. Continuar para guardar.

Deja sin marcar CREATE, DROP y ALTER. Tu aplicación no crea ni borra tablas mientras funciona: eso se hace en el despliegue, con otro usuario.

Comprobar los permisos

phpMyAdmin tiene una consola SQL, y a veces es más rápido verificar ahí. En la pestaña SQL:

SHOW GRANTS FOR 'app_tienda'@'localhost';

Deberías ver algo así:

GRANT USAGE ON *.* TO `app_tienda`@`localhost`
GRANT SELECT, INSERT, UPDATE, DELETE ON `tienda`.* TO `app_tienda`@`localhost`

USAGE significa «puede conectarse pero no tiene privilegios», que es exactamente lo que queremos a nivel global.

Usar el usuario nuevo en tu aplicación

Con eso, la conexión de tu sistema deja de usar root:

<?php
$pdo = new PDO(
    'mysql:host=127.0.0.1;dbname=tienda;charset=utf8mb4',
    'app_tienda',
    $config['clave'],
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

Y recuerda: esa contraseña va en un archivo de configuración fuera del repositorio, como vimos en el curso de PHP.

Eliminar un usuario

Cuentas de usuario → marca la casilla del usuario → Continuar en la sección de eliminación.

Marca también la opción de eliminar las bases de datos con el mismo nombre solo si estás seguro. Si no, borrarás datos junto con el usuario.

Problemas frecuentes

«Access denied for user root@localhost». phpMyAdmin sigue usando la contraseña vieja. Actualiza config.inc.php como vimos arriba.

«El servidor no responde». MySQL no está iniciado. Arráncalo desde el panel de XAMPP.

Cambié la contraseña y ahora no entro a ningún lado. Si además la olvidaste, hay que iniciar MySQL en modo seguro para restablecerla. Es un procedimiento incómodo, y la razón por la que conviene guardarla en un gestor de contraseñas apenas la generas.

Los cambios de permisos no surten efecto. Ejecuta FLUSH PRIVILEGES; desde la pestaña SQL.

Cuándo usar phpMyAdmin y cuándo no

Sí: administrar la base de datos de un hosting compartido, donde suele ser la única opción disponible; consultas rápidas; revisar datos.

No: diseñar la estructura de una base grande —para eso está Workbench, que veremos en la siguiente lección—, ni trabajar con tablas de millones de filas, donde se vuelve lento.

Para cerrar

phpMyAdmin es cómodo y está en todas partes, y con él ya puedes gestionar usuarios sin escribir SQL. Lo importante no es la herramienta sino el criterio: contraseña en root, un usuario aparte para la aplicación y solo los cuatro permisos que necesita.

En la siguiente lección hacemos lo mismo desde MySQL Workbench.

Saludos y éxitos.

Norvic Software

Desarrollamos el software que tu empresa necesita

Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.

Solicitar cotizaciónVer todos los servicios

Cotización sin costo · Respuesta directa por WhatsApp