Seguridad En Bd
BASE DE DATOS
Bases de datos en MySQL
Usuarios y privilegios
El acceso al servidor MySQL está controlado por usuarios y privilegios. Los
usuarios del servidor MySQL no tienen ninguna correspondencia con los
usuarios del sistema operativo. Aunque en la práctica es común que algún administrador de MySQL asigne los mismos nombres que los usuarios tienen en
el sistema, son mecanismostotalmente independientes y suele ser aconsejable
en general.
El usuario administrador del sistema MySQL se llama root. Igual que el superusuario de los sistemas tipo UNIX.
Vemos otra forma de asignar con-traseñas a un usuario, desde el cliente de
mysql y como usuario root:
mysql> set password for ''@'localhost' = password(’nuevapasswd’);
La administración de privilegios y usuarios en MySQL serealiza a través de las
sentencias:
• GRANT. Otorga privilegios a un usuario, en caso de no existir, se creará el
usuario.
• REVOKE. Elimina los privilegios de un usuario existente.
• SET PASSWORD. Asigna una contraseña.
• DROP USER. Elimina un usuario.
5.2.1. La sentencia GRANT
La sintaxis simplificada de grant consta de tres secciones. No puede omitirse
ninguna, y es importante el orden de lasmismas:
• grant lista de privilegios
• on base de datos.tabla
• to usuario
Ejemplo
Creación de un nuevo usuario al que se otorga algunos privilegios
mysql> grant update, insert, select
-> on demo.precios
-> to visitante@localhost ;
En la primera línea se especifican los privilegios que serán otorgados, en este caso se permite
actualizar (update), insertar (insert) y consultar (select). La segundalínea especifica que los
privilegios se aplican a la tabla precios de la base de datos demo. En la última línea se encuentra el nombre del usuario y el equipo desde el que se va a permitir la conexión.
Bases de datos en MySQL
El comando grant crea la cuenta si no existe y, si existe, agrega los privilegios
especificados. Es posible asignar una contraseña a la cuenta al mismo tiempo
que se creay se le otorgan privilegios:
mysql> grant update, insert, select
-> on demo.precios
-> to visitante@localhost identified by ’nuevapasswd’;
En la misma sentencia es posible también otorgar permisos a más de un usuario y asignarles, o no, contraseña:
mysql> grant update, insert, select
-> on demo.precios
-> to visitante@localhost,
-> yo@localhost identified by ’nuevapasswd’,
->tu@equipo.remoto.com;
Especificación de lugares origen de la conexión
MySQL proporciona mecanismos para permitir que el usuario realice su conexión desde diferentes equipos dentro de una red específica, sólo desde un
equipo, o únicamente desde el propio servidor.
mysql> grant update, insert, select
-> on demo.precios
-> to visitante@’%.empresa.com’;
El carácter % se utiliza de la misma forma que en el comandolike: sustituye a
cualquier cadena de caracteres. En este caso, se permitiría el acceso del usuario
'visitante' (con contraseña, si la tuviese definida) desde cualquier equipo del
dominio 'empresa.com'. Obsérvese que es necesario entrecomillar el nombre
del equipo origen con el fin de que sea aceptado por MySQL. Al igual que en
like, puede utilizarse el carácter ’_’.
Entonces, para permitir laentrada desde cualquier equipo en Internet, escribiríamos:
-> to visitante@’%’
Bases de datos en MySQL
Obtendríamos el mismo resultado omitiendo el nombre del equipo origen y
escribiendo simplemente el nombre del usuario:
-> to visitante
Los anfitriones válidos también se pueden especificar con sus direcciones IP.
to visitante@192.168.128.10
to visitante@’192.168.128.%’
Los caracteres ’ %’ y’_’ no se permiten en los nombres de los usuarios.
Especificación de bases de datos y tablas
Después de analizar las opciones referentes a los lugares de conexión permitidos, veamos ahora cómo podemos limitar los privilegios a bases de datos, tablas y columnas.
En el siguiente ejemplo otorgamos privilegios sobre todas las tablas de la base
de datos demo.
mysql> grant all
-> on demo.*
-> to...
Regístrate para leer el documento completo.