MySQL -- Configurar Usuarios

MySQL -- Configurar Usuarios

Para conocer un poco más la MySQL y poder solucionar algunos problemas que nos pueden salir aquí os dejo algunos comandos que son utilies conocer, para controlar mejor nuestro Drupal

Comandos GRANT y REVOKE

GRANT

Los Comandos GRANT y REVOKE se utilizan para conceder y retirar los derechos a los usuarios de MySQL.
Hay cuatro niveles de privilegio.

Estos niveles son:

  • Global
  • Base de datos
  • Tabla
  • Columna

Comando GRANT

Se utiliza para crear usuarios y concederle previlegios. La sintaxis general del comando GRANT es la siguiente:

GRANT privilegios (columnas)
ON elemento
TO nombre_usuario IDENTIFIED BY 'contraseña'
(whith grant option);

Lo que esta dentro de los parentisis son opcionales, y los parentisis no hay que ponerlos.

Es importantisimo que al final poner el ";" despues de poner cada linea pulsar "intro", pues si hay algun error mysql nos indicara en que linea esta el error.

En primer lugar veremos previlegios, equivale a una lista de privilegios separados por comas.

Columnas

Es opcional y puede ser utilizado para especificar previlegios a cada columna. Si los separamos por comas podemos poner una serie de lista de nombres de columnas.

Elemento

Es la base de datos o la tabla a la que se aplican los nuevos privilegios.

Se puede conceder privilegios a todos las bases de datos especificando *.* como elemento. Es lo que se conoce como conceder privilegios globales.Tambien se puede especificar * únicamente si no va utilizar ninguna base de datos en concreto.
Por regla general, especificará todas las tablas de la bases de datos como nombre_bd.*, una sola tabla de base de datos como nombre_bd.nombre_tabla o columnas deseadas en el marcador de posicioncolumnas. Si está utilizando una base de datos especifíca al remitir este comando y sólo se utiliza nombre_table, se interpretará como una tabla de la base de datos actual.

Nombre_usuario

Será el nombre del usuario, con el que deseas registrar en MySQL. Recuerda que no tiene por qué ser el mismo que el nombre de registro del sistema. Este parámetro también pueden contener un nombre de host. Puedes utilizarlo para distinguir, por ejemplo, entre "ramon", interpretado como ramon@hostlocal y ramon@otrositio.com Esta opción resulta bastante útil porque los usuarios pertenecientes a varios dominios suelen utilizar los mismos nombres.

Contraseña

Es la contraseña que que deseamos utilizar para iniciar la sesion. Es aconsejable que tengan una combinacion de caracteres, entre mayusaculas minusculas y números.

With grant option

Es opcion y permite delegar los privilegios en otro usuario.

Los privilegios se almacenan en cuatro tablas del sistema, dentro de la base de datos mysql. Estas cuatro tablas se denominan mysql.user, mysql.db, mysql.table_priv ymysql.colms_priv y se relacionan directamente con los cuatro niveles de privilegio mencionados anteriormente. Como alternativa a GRANT, puede alterar estas tablas directamente.

REVOKE

Es el contrario al comando opuesto al GRANT. Se utiliza para retirar privilegios de un usuario.
Su sintaxis es muy similar a la sintaxis de GRANT:

REVOKE privilegios [(columnas)]
ON elemento
FROM nopmbre_de_usuario

Si se ha concedido privilegios con la clásula WITH GRANT OPTION, puedes revocarlos de la siguiente forma:

REVOKE GRANT OPTION
ON elemento
FROMnombre_de_usuario

Ejemplos de GRANT y REVOKE.

Para configurar un administrador, podemos escribir:

mysql > grant all
-> on *
-> to julia identified by 'Qe4w'
-> with grant option;

Os volvemos a recordar que, dejaremos en la última línea el punto y coma, de esta forma si cometemos algún error nos dira en que linea nos hemos equivocado.

Aquí podemos observar que hemos dado a julia todos los privilegios sobre todas las Bases de Datos existentes, con la contraseña Qe4w

Este tipo de privilegio solo es aconsejable para los administradores, y no para el usuario; por lo que conviene quitarselos por mayor seguridad.

mysql > revoke all
-> on *
-> from julia;

Pero ¿como podemos configurar un usuario normal?

mysql > grant usage
-> on peliculas .*
-> to julia identified by 'Qe4w';

A partir de ahora le concedemos los privilegios en funcion de los que nos a pedido hacer, poniendo los privilegios adecuados

mysq > grant select, insert, update, delete, index, alter, create, drop
-> on peliculas .*
-> to julia;

Como ya hemos creado la contraseña al crear un usuario sin privilejios, no hace falta ponerla, con poner los privilegios nos basta.

Pero resulta que julia no ha respetado las normas que se le dijo y queremos quitarle privilegios:

mysql > revoke alter, create, drop
-> on peliculas.*
-> from julia;

Si al final nos comunica que no quiere más ser usuario de nuestra BD pondremos revocar :

mysql > revoke all
-> on peliculas.*
-> from julia;

Niveles de privilegios y tipos.

Existen tres tipos básicos de privilegios en MySQL

  • Privilegios apropiados para su consesión a los usuarios habituales.
  • Privilegios apropiados para su concesión a los administradores.
  • Dos privilegios especiales.

Para tener mas segura nuestra Bases de Datos (BD) hay que tener en cuenta los diferentes privilegios que concedemos a los usarios o a los administradores, pues de ellos dependeran que las BD's sean hackeadas.

Es aconsejable que los administradores tengan todos los privilegios, y que los usuarios tengan el nivel mas bajo de los mismos.

Si entendemos perfectamente estos principioas de los comandos GRANT y REVOKE; podemos entender como crear en nuestra BD, un usuario y que privilegios queremos dar.