Diferencia entre revisiones de «Mysql Creación de usuarios»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 70: Línea 70:
 
Image:Mysql_usuarios_7.jpg| Ahora los clientes que intenten conectarse al Mysql, si lo haces desde la propia máquina, intentarán utilizar la conexión SSL por defecto. Podemos comprobarlo conectándose con la orden: '''mysql -u root -p -h 127.0.0.1'''. Fijarse que debemos de poner el parámetro -h (de host) ya que de esta forma estamos conectándonos por TCTP/IP. Si no lo ponemos estaríamos conectándonos a través del socket.
 
Image:Mysql_usuarios_7.jpg| Ahora los clientes que intenten conectarse al Mysql, si lo haces desde la propia máquina, intentarán utilizar la conexión SSL por defecto. Podemos comprobarlo conectándose con la orden: '''mysql -u root -p -h 127.0.0.1'''. Fijarse que debemos de poner el parámetro -h (de host) ya que de esta forma estamos conectándonos por TCTP/IP. Si no lo ponemos estaríamos conectándonos a través del socket.
 
Image:Mysql_usuarios_8.jpg| Si estamos en el Workbench podemos crear una conexión nueva y ver como en la pestaña SSL ya tiene marcada la opción SSL si está disponible.  
 
Image:Mysql_usuarios_8.jpg| Si estamos en el Workbench podemos crear una conexión nueva y ver como en la pestaña SSL ya tiene marcada la opción SSL si está disponible.  
−
Image:Mysql_usuarios_9.jpg| Si hubiéramos generado los archivos SSL en otro directorio diferente al directorio de datos de Mysql, tendríamos que editar el archivo de configuración del servidor Mysql, indicar la ruta donde se encuentran los archivos (como muestra la imagen), editar el archivo de configuración de las herramientas clientes (en la sección [] correspondiente y poner la misma información que en el servidor, pero sólo las entradas: '''ssl-cert'''y '''ssl-key'''. Recuerda que en las distribuciones basadas en Ubuntu tenemos que dar permiso de acceso a esos archivos si están en un directorio diferente como vimos en el punto de 'Casos especial: los directorios' durante [http://wiki.cifprodolfoucha.es/index.php?title=Mysql_Instalaci%C3%B3n#Del_servidor la instalación].  
+
Image:Mysql_usuarios_9.jpg| Si hubiéramos generado los archivos SSL en otro directorio diferente al directorio de datos de Mysql, tendríamos que editar el archivo de configuración del servidor Mysql, indicar la ruta donde se encuentran los archivos (como muestra la imagen), editar el archivo de configuración de las herramientas clientes (en la sección [] correspondiente) y poner la misma información que en el servidor, pero sólo las entradas: '''ssl-cert''' y '''ssl-key'''. Recuerda que en las distribuciones basadas en Ubuntu tenemos que dar permiso de acceso a esos archivos si están en un directorio diferente como vimos en el punto de 'Casos especial: los directorios' durante [http://wiki.cifprodolfoucha.es/index.php?title=Mysql_Instalaci%C3%B3n#Del_servidor la instalación].  
 
</gallery>
 
</gallery>
  

Revisión del 19:06 10 nov 2017

Introducción

  • Vimos en el punto anterior como es posible manipular la tabla user directamente con las órdenes SQL INSERT, UPDATE, DELETE.
Pero a la hora de crear nuevos usuarios, normalmente haremos uso de órdenes SQL pertenecientes al lenguaje de control de datos.


SQL

Creando nuevos usuarios

  • La orden SQL que permite añadir nuevos usuarios es: CREATE USER.


Su forma más simple:
1 CREATE USER nombre_usuario IDENTIFIED BY 'password';
nombre_usuario tiene el formato: 'usuario'@'host'
Por ejemplo:
1 CREATE USER 'angel' IDENTIFIED BY '12345678';
Estaríamos añadiendo una nueva fila a la tabla 'user' de la base de datos 'mysql', con nombre de usuario 'angel' y password '12345678'


  • Si no podemos la palabra clave 'IDENTIFIED BY' estaríamos creando un usuario sin contraseña, lo cual no es recomendado.
Por ejemplo:
1 CREATE USER 'anonimo';
Al crear este usuario sin contraseña, podríamos conectarnos al Mysql sin enviar el parámetro -p o --password en herramientas clientes:
1 mysql -u anonimo


  • Para ver las sentencia 'CREATE USER' utilizada para crear un determinado usuario, debemos ejecutar la orden SQL: SHOW CREATE USER usuario
Por ejemplo, para ver la sentencia 'create user' del usuario actual podemos poner:
1 SHOW CREATE USER CURRENT_USER();
Mysql usuarios 1.jpg



Conexiones seguras

  • Queda fuera de este manual explicar los tipos de certificados y como funcionan para garantizar una conexión segura.
Decir que se basan en el uso de 'claves públicas' y 'claves privadas'.
Podemos consultar la wikipedia para aclarar los conceptos.


  • En MYSQL podemos hacer que el servidor acepte conexiones SSL, es decir, conexiones cifradas.
Para ello debemos seguir los siguientes pasos:


  • En este momento el servidor Mysql por defecto va a intentar siempre establecer una conexión segura cuando un cliente intente conectarse.
Pero no impedimos que un cliente pueda conectarse de forma insegura.
Veamos un ejemplo:
Si ejecutamos la orden: mysql -u user1 -p -h 127.0.0.1 --ssl-mode=disabled
Estaríamos conectando con un usuario creado previamente pero sin utilizar la conexión SSL.
Podemos comprobarlo:
Mysql usuarios 10.jpg



  • Si quisiéramos que el servidor MYSQL sólo aceptara conexione seguras, debemos de escribir en su fichero de configuración: require_secure_transport = ON
Reiniciar el servicio.
Podemos comprobar ahora como las conexiones inseguras no está permitidas.
Mysql usuarios 11.jpg
Nota: En algunos sitios recomienda poner la opción de configuración en el archivo /etc/mysql/my.cnf para evitar conflictos con otras opciones puestas en los diferentes archivos de configuración.
De esta forma siempre cargará, después de cargar las configuraciones indicadas en los include, la orden indicada.
1 !includedir /etc/mysql/conf.d/
2 !includedir /etc/mysql/mysql.conf.d/
3 
4 [mysqld]
5 require_secure_transport = ON


  • Una vez tenemos configurado el servidor Mysql para que acepte conexiones seguras, podemos obligar a un determinado usuario a que sólo se pueda conectar si utiliza una conexión cifrada mediante un certificado SSL:
Nota: Para hacer esta práctica deberéis permitir que el servidor Mysql acepte conexiones inseguras, comentando la orden anterior y reiniciando el servicio...
1 CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'password' REQUIRE SSL;
Como vemos al final de la orden CREATE USER debemos escribir REQUIRE SSL.
Nota: Un certificado SSL es el tipo de certificado más conocidos de los certificados X.509.


Por ejemplo:
1 CREATE USER 'clientessl'@'192.168.1.103' IDENTIFIED BY 'clientessl' REQUIRE SSL;
Estoy creando un usuario de nombre 'clientessl' que va a conectarse desde mi máquina real que tiene ip 192.168.1.103 hacia el servidor Mysql que está en una máquina virtual en modo bridge con la ip 192.168.1.109.
Si intento conectarme deshabilitando las conexiones seguras me mostrará un mensaje de error, pero sí me dejará con la conexión SSL como podemos comprobar en la siguiente imagen:
Mysql usuarios 12.jpg


  • IMPORTANTE: Recordar que es necesario comentar la línea del archivo de configuración de Mysql, bind_address y que si nuestro equipo tiene un firewall deberemos habilitar una regla para permite el tráfico desde los ordenadores que intentan conectar al servidor Mysql y a su puerto 3306.


  • Información obtenida de:











-- Ángel D. Fernández González -- (2017).