Saltar al contenido

Seguridad en Mysql

Todo el sistema de permisos MySQL lo guarda en una base de datos llamada mysql, la cuál se componen de cinco tablas: host, user, db, tables_priv, colums_priv.

La tabla user contiene información sobre los usuarios, desde que máquinas pueden acceder a nuestro servidor MySQL, su clave y de sus diferentes permisos. La tabla host nos informa sobre que máquinas podran acceder a nuestro sistema, así como a las bases de datos que tendrán acesso y sus diferentes permisos. Finalmente, las tablas db, tables_priv, columns_priv nos proveen de un control individual de las bases de datos, tablas y columnas (campos).

Tabla user

CAMPO TIPO POR DEFECTO
Host char(60)
User char(16)
Password char(16)
Select_priv enum(‘N’,’Y’) N
Insert_priv enum(‘N’,’Y’) N
Update_priv enum(‘N’,’Y’) N
Delete_priv enum(‘N’,’Y’) N
Create_priv enum(‘N’,’Y’) N
Drop_priv enum(‘N’,’Y’) N
Reload_priv enum(‘N’,’Y’) N
Shutdown_priv enum(‘N’,’Y’) N
Process_priv enum(‘N’,’Y’) N
File_priv enum(‘N’,’Y’) N
Grant_priv enum(‘N’,’Y’) N
References_priv enum(‘N’,’Y’) N
Index_priv enum(‘N’,’Y’) N
Alter_priv enum(‘N’,’Y’) N

Tabla host

CAMPO TIPO POR DEFECTO
Host char(60)
Db char(32)
Select_priv enum(‘N’,’Y’) N
Insert_priv enum(‘N’,’Y’) N
Update_priv enum(‘N’,’Y’) N
Delete_priv enum(‘N’,’Y’) N
Create_priv enum(‘N’,’Y’) N
Drop_priv enum(‘N’,’Y’) N
Grant_priv enum(‘N’,’Y’) N
References_priv enum(‘N’,’Y’) N
Index_priv enum(‘N’,’Y’) N
Alter_priv enum(‘N’,’Y’) N

Tabla db

CAMPO TIPO POR DEFECTO
Host char(60)
Db char(32)
User char(16)
Select_priv enum(‘N’,’Y’) N
Insert_priv enum(‘N’,’Y’) N
Update_priv enum(‘N’,’Y’) N
Delete_priv enum(‘N’,’Y’) N
Create_priv enum(‘N’,’Y’) N
Drop_priv enum(‘N’,’Y’) N
References_priv enum(‘N’,’Y’) N
Index_priv enum(‘N’,’Y’) N
Alter_priv enum(‘N’,’Y’) N

He aquí una breve descripción de los diferentes permisos:

  • Select_priv: Permite utilizar la sentencia SELECT
  • Insert_priv: Permite utilizar la sentencia INSERT
  • Update_priv: Permite utilizar la sentencia UPDATE
  • Delete_priv: Permite utilizar la sentencia DELETE
  • Create_priv: Permite utilizar la sentencia CREATE o crear bases de datos
  • Drop_priv: Permite utilizar la sentencia DROP o eliminar bases de datos
  • Reload_priv: Permite recargar el sistema mediante mysqladmin reload
  • Shutdown_priv: Permite parar el servidor mediante
  • mysqladmin: Permite parar el servidor mediantemysqladmin shutdown
  • Process_priv: Permite manejar procesos del servidor
  • File_priv: Permite leer y escribir ficheros usando comando como SELECT INTO OUTFILE y LOAD DATA INFILE
  • Grant_priv: Permite otorgar permisos a otros usuarios
  • Index_priv: Permite crear o borrar índices
  • Alter_priv: Permite utilizar la sentencia ALTER TABLE

Si dejamos en blanco los campos userhost o db, haremos referencia a cualquier usario, servidor o base de datos. Conseguiremos el mismo efecto poniendo el símbolo % en el campo.