Crear un usuario y gestionar los privilegios de acceso en MySQL

Cómo crear usuarios de MySQL y gestionar sus privilegios.

Al trabajar con un servidor dedicado o un VPS, una de las tareas clave es organizar el almacenamiento y la gestión de datos. MySQL es un sistema de gestión de bases de datos que permite estructurar la información de forma eficiente y controlar el acceso de los usuarios. Es adecuado tanto para proyectos pequeños como para aplicaciones de mayor escala, y ofrece seguridad, fiabilidad y facilidad de uso.

MySQL utiliza un sistema de usuarios para controlar el acceso a las bases de datos. Un administrador o usuario autorizado puede conceder a otros usuarios acceso completo o restringido a bases de datos y tablas específicas.

Privilegios de MySQL

Privilegios a nivel de base de datos y tabla:

  • CREATE — crear bases de datos y tablas.
  • DROP — eliminar bases de datos y tablas.
  • INSERT — añadir filas a las tablas.
  • UPDATE — modificar los datos de las filas. No confundir con ALTER, que cambia la estructura de la tabla.
  • DELETE — eliminar filas de las tablas.
  • ALTER — modificar la estructura de las tablas; requiere los privilegios CREATE e INSERT.
  • SELECT — leer datos de las tablas.
  • GRANT OPTION — conceder o revocar privilegios a otros usuarios (limitado a los privilegios que el propio usuario ya posee).
  • LOCK TABLES — bloquear tablas durante operaciones de escritura.
  • REFERENCES — crear relaciones de clave foránea entre tablas.
  • EVENT — crear, modificar y eliminar eventos del planificador.
  • TRIGGER — crear, modificar y eliminar triggers para las operaciones DELETE, UPDATE e INSERT.
  • INDEX — crear y eliminar índices.
  • CREATE TEMPORARY TABLES — crear tablas temporales durante la duración de una sesión.
  • CREATE VIEW — crear vistas que agreguen datos de otras tablas.
  • SHOW VIEW — ver la consulta SQL que hay detrás de una definición de vista.
  • CREATE ROUTINE — crear procedimientos almacenados.
  • ALTER ROUTINE — modificar procedimientos almacenados.
  • EXECUTE — ejecutar procedimientos almacenados.
  • FILE — acceder a los archivos del servidor disponibles para MySQL y crear archivos en directorios en los que MySQL tiene permisos de escritura.

Privilegios administrativos:

  • CREATE TABLESPACE — crear, modificar y eliminar tablespaces.
  • CREATE USER — crear, modificar y eliminar usuarios de MySQL.
  • PROCESS — ver información sobre los hilos activos del servidor.
  • PROXY — iniciar sesión como otro usuario para comprobar sus derechos de acceso.
  • RELOAD — ejecutar el comando FLUSH para vaciar la caché de MySQL.
  • REPLICATION CLIENT — ejecutar SHOW MASTER STATUS, SHOW SLAVE STATUS y SHOW BINARY LOG.
  • REPLICATION SLAVE — permitir que los servidores réplica reciban actualizaciones del servidor primario.
  • SHOW DATABASES — listar todas las bases de datos del servidor.
  • SHUTDOWN — apagar el servidor MySQL.
  • SUPER — derechos administrativos ampliados: terminar procesos de otros usuarios, modificar variables globales del sistema, gestionar el logging y la replicación.
  • ALL — todos los privilegios disponibles excepto GRANT OPTION.

Nuestros servicios y productos

HostingFunciona en discos NVMe ultrarrápidos. Apto para sitios web de cualquier complejidad.
Pedir
VPSParámetros ajustables y configuración flexible del SO. Administración gratuita incluida.
Pedir
Servidores dedicadosDisponibles diversas configuraciones Supermicro con procesadores Intel y AMD.
Pedir

Crear un usuario

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Por defecto, el nuevo usuario no tiene privilegios sobre ninguna base de datos.

Conceder privilegios

Conceder todos los privilegios sobre todas las bases de datos y tablas:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

Conceder privilegios específicos sobre una base de datos o tabla concreta:

GRANT [privilege type] ON [database].[table] TO '[username]'@'localhost';

Usa * en lugar del nombre de una base de datos o tabla para aplicar los privilegios a todos.

Tras realizar cambios, recarga las tablas de privilegios:

FLUSH PRIVILEGES;

Revocar privilegios

REVOKE [privilege type] ON [database].[table] FROM '[username]'@'localhost';

Eliminar un usuario

DROP USER 'demo'@'localhost';

Verificar la cuenta

Salir de MySQL:

quit

A continuación, volver a iniciar sesión como el nuevo usuario:

mysql -u [username] -p

Ayuda

¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!

¿Necesitas ayuda?Nuestros ingenieros te ayudarán gratuitamente con cualquier pregunta en minutosContáctanos