MySQL presenta un esquema de seguridad refinado, flexible y basado en lista de control de accesos. Un usuario en MySQL se identifica por el login e identificador de la computadora cliente (IP, nombre), esto se basa en el principio de que el usuario Pepe que se conecta desde la oficina no tiene por que ser el mismo Pepe que se conecta desde la casa. MySQL utiliza las tablas user, db, host, tables_priv, columns_priv y procs_priv de la base de datos mysql para administrar su sistema de privelegios permitiendo definir accesos a nivel de base de datos, tablas, columnas y operaciones (select, insert, delete, update, grant). En esta guía mostraremos como crear y eliminar usuarios, establecer y revocar permisos.
Crear usuario
create user usuario [identified by 'contraseña'];
- Donde: usuario = 'nom-usuario'@'nom-comp', si se omite @'nom-comp' entonces el usuario se puede conectar al servidor mysql desde cualquier computadora cliente - Si se omite identified by 'contraseña', entonces el usuario se puede conectar al servidor mysql sin especificar contraseña (Método no recomendado)
Conectarse al servidor mysql (localhost)
Para más info ver: Administrar servidor MySQL – Básico
mysql -u sedlav -p
Una vez autenticado si intentamos realizar cualquier operación, el servidor mysql nos la denegará debido que no le hemos establecido privilegios al usuario sedlav
Establecer / Revocar privilegios
Si el usuario al cual le estamos estableciendo los privilegios no existe entonces el servidor mysql lo creará y le asignará los permissos correspondientes
Establecer privilegios. Sinopsis
grant tipo_priv (columnas) on base_dato.tabla to usuario[@nom-comp] [identified by contraseña];
Revocar privilegios. Sinopsis
revoke tipo_priv (columnas), grant option on base_dato.tabla from usuario[@nom-comp];
Donde tipo_priv = all | select[,insert,[update]]
Ejemplos
Establecer permisos globales (Todos los permisos en todas las tablas de todas las bases)
grant all on *.* to sedlav@localhost identified by contraseña;
Revocar permisos globales
revoke all, grant option from sedlav@localhost;
Establecer / Revocar privilegios globales al usuario sedlav en la base de datos pruebas
Establecer
grant all on prueba.* to sedlav@localhost identified by contraseña;
Revocar
revoke all on prueba.* from sedlav@localhost identified by contraseña;
Establecer / Revocar privilegios especificos para una tabla
Establecer
grant select,insert on prueba.usuario to sedlav@localhost identified by contraseña;
Revocar
revoke select,insert on prueba.usuario from sedlav@localhost;
Establecer / Revocar privilegios específicos para una columna
Establecer
grant update(nombre-columna) on prueba.usuario to sedlav@localhost identified by contraseña;
Revocar
revoke update(nombre-columna) on prueba.usuario from sedlav@localhost;
Mostrar privilegios
Para la session actual
show grants;
Para un usuario determinado
show grants for nom-usuario[@nom-comp];
Refrescar privilegios
flush privileges;
Eliminar usuario
drop sedlav[@nom-pc];
Lecturas recomendadas
– help grant (MySQL)
– help revoke (MySQL)
– help drop user (MySQL)
Administrar MySQL desde la línea de comandos, 11 (18)
- Cómo instalar MySQL 8.0 en Ubuntu 20.04
- Como instalar MySQL 8.0 en Debian
- Cómo instalar MariaDB en Alpine Linux
- Cómo instalar MariaDB en NetBSD
- MySQL 8.0, cambiar contraseña de root
- ¿Cómo mostrar variables del sistema en MySQL?
- Deshabilitar innodb engine en mysql
- Administrar servidor MySQL – Básico
- Motores de almacenamiento disponibles/habilitados en MySQL
- MySQL: Recuperar la clave (password) de root
- MySQL Administración de usuarios
- MySQL ejecutar script SQL
- Copias de seguridad (Backup) en MySQL
- Crear / Modificar / Eliminar tablas en MySQL
- Connectarse a MySQL desde la LAN
- Character set disponibles en MySQL
- MySQL no puede escribir en el dir /tmp
- Cómo instalar MySQL 5.7 en CentOS 7
Tambien se puede usar el símbolo % como nombre de la compu lo que siginifica que el usuario en cuestión puede conectarse desde cualquier cliente