Mostrando las entradas con la etiqueta sgbd. Mostrar todas las entradas
Mostrando las entradas con la etiqueta sgbd. Mostrar todas las entradas

jueves, 24 de octubre de 2019

Cambiar permisos de usuario en MySQL

En este sencillo post aprenderemos como crear un usuarios con todos los privilegios para MySQL. (obviamente tenemos que tener instalado MySQL, para ello hay un post dedicado a ello en este blog).


MySQL Logo con un fondo no muy transparente o.O
Primero que todo entramos a MySQL

sudo mysql
 
o
 

mysql -u root -p
 

segun como tengamos configurado nuestro usuario root. 




Luego desde el prompt de MySQL ejecutamos lo siguiente:

mysql> CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'password';

Y luego le damos todos los privilegios al usuario con el siguiente comando:

 mysql>GRANT ALL PRIVILEGES ON *.* TO 'nombre_usuario'@'localhost' WITH GRANT OPTION;

 Y ya podemos salir de mysql porque el trabajo esta terminado :D

mysql> exit

Saludos amigos y ojala este post les haga la vida mas facil y les evite las miles de frustraciones que seguro (como yo) ya tuvieron :D

BONUS TRACK

¡¡PERO OJO!! capaz vos no querías darle TOOOODOS los privilegios al nuevo usuario y es entendible. ¿¿y ahí?? ¿Qué se hace?

¡Tranca che! Vos sabes que en mate&code no te vas sin EL DATO, por eso te dejo esta mini guía para comprender el comando GRANT de SQL:

En realidad la instrucción seria algo asi como esto:


GRANT [permiso] ON [Base de Datos].[Tabla/s] TO [usuario]@'localhost'


Vamos a descomponer el comando para entenderlo mejor:

  • GRANT: Otorga privilegios a un usuario especificado en las BD especificadas.
  • [permisos]: Aquí podemos elegir entre varias opciones según la cantidad de privelgios que queremos darle al usuario. Las mismas se listan a continuación:
    • ALL PRIVILEGES: Otorga todos los privilegios.
    • SELECT: Permite hacer consultas.
    • INSERT: Permite Insertar registros nuevos.
    • UPDATE: Permite actualizar registros.
    • DELETE: Permite eliminar registros.
    • CREATE: Permite crear tablas.
    • DROP: Permite eliminar tablas.
    • ALTER: Permite modificar la definición de las tablas.
    • INDEX: Permite crear índices en tablas existentes.
    • GRANT OPTION: Permite dar o quitar privilegios a los usuarios de la BD.
* NOTA: Estos se pueden combinar de cualquier forma para dar los privilegios específicos que queramos darle a un usuario determinado. Obviamente ALL PRIVILEGES si se lo usa debería ir solo ya que da todos los privilegios y no tendria sentido combiarnlo con otro.

  • [BD]: Indica sobre que BD queremos dar los privilegios antes mencionados. Si usamos * decimos que le damos permiso sobre TODAS las BD del sistema.
  • [Tablas/s]: Indica sobre que Tablas de la/s BD indicadas anteriormente queremos darle permisos al usuario. Si usamos * decimos que le damos permiso sobre TODAS las Tablas de las BD indicadas.
  • [usuario]: A que usuario le queremos dar los permisos detallados anteriormente. Si usamos el "*" diremos que TODOS los usuarios tienen permisos para realizar dicha acción.
Veamos un par de ejemplos para entender esto:

GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'jorgehoracio'@'localhost'

Dimos permisos de Consultar, Insertar, Actualizar y Eliminar registros a jorgehoracio sobre todas las BD y todas las tablas existentes.
GRANT SELECT ON propietarios TO '*'@'localhost'
Se dieron permisos a TODOS LOS USUARIOS para Consultar la tabla propietarios.
Para eliminar los permisos se utiliza la clausula REVOKE en lugar de GRANT y bajo la misma estructura.
REVOKE ALL PRIVILEGES ON *.* TO 'luisandreseim'@'localhost'
 En la anterior sentencia se le quitaron todos los privilegios al usuario luisandreseim de todas las tablas y todas las bases de datos.

Pero este tema de quitar permisos lo veremos con mas detalles en una próxima entrada.

¡AHORA SI FINAL FINAL DE TODO!

Espero que esta sencilla guía les ayude a volver a tomar el control sobre sus BD's 😉

¡¡Un abrazo virtual grande y a disfrutar de esos mates en estos días frescos!!


Instalar MySQL en Ubuntu 18.04 y Debian

Buenas buenas! hoy les traemos un pequeño tutorial el Sistema Gestor de Bases de Datos de codigo abierto, MySQL, necesario para el Stack LAMP (Linux, Apache, MySQL, PHP/PEARL/Python), para aprender SQL o para lo que sea que lo necesitemos.


1er Paso - Instalación


Primero actualizamos el índice del paquete en el servidor apt:

$ sudo apt update

Luego instalamos el paquete predeterminado:

$ sudo apt install mysql-server

Hasta aqui tendremos instalado MySQL pero de manera insegura ya que no nos pidio contraseñas ni nada. Y esto es lo que vamos a configurar ahora.

2do Paso - Configurar MySQL

Primero ejecutamos el Script de seguridad:

$ sudo mysql_secure_installation

Esto hará que pasemos por una serie de indicaciones en las que podemos hacer algunos cambios en las opciones de seguridad de la instalación de MySQL. La primera indicación preguntara si queremos configurar un plugin para probar la solidez de nuestra contraseña (en este caso podemos elegir lo que querramos, esta en nosotros si lo queremos o no).

Lo importante es que la segunda indicación nos pedirá establecer una contraseña para el usuario root. Ingresamos una contraseña y luego confirmamos.

Desde este punto podemos presionar "ENTER-ENTER" hasta finalizar. Lo que hace en esa parte el asistente es eliminar las Bases de Datos de pruebas y Usuarios anónimos ademas de deshabilitar el inicio de sesión root remotos y cargara las nuevas reglas inmediatamente.

3er Paso - Ajustar la autenticacón y los privilegios de usuario (Opcional pero ALTAMENTE RECOMENDADO)

 Para los sistemas Ubuntu que usen MySQL 5.7 (y posteriores), el usuario root de MySQL esta configurado de forma predeterminada para autenticarse para usar el plugin auth_socket en vez de una contraseña. En muchos casos esto permite que la usabilidad y la seguridad sea mayor pero puede complicar las cosas cuando un programa externo (como por ejemplo PHPMyAdmin) quiera tener acceso al usuario.
 Entonces deberemos cambiar el método de autenticación de auth_socket a mysql_native_password. Para ello abrimos MySQL como root usando la siguiente instrucción en la consola de Linux:

$ sudo mysql

Luego usamos el siguiente comando para consultar el método de autenticación de las cuentas de usuario:

mysql>  SELECT user,authentication_string,plugin,host FROM mysql.user;
 
donde vemos que el usuario root se autentica con el plugin auth_socket. Para configurar que se autentique usando contraseña usamos el siguiente comando, asegurandose de cambiar donde dice contraseña por la contraseña que deseemos para root (nota, dejar las comillas):

mysql>  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'contraseña';


y luego ejecutamos FLUSH PRIVILEGES para purgar los privilegios y se implementen los nuevos cambios.

mysql> FLUSH PRIVILEGES;

y nuevamente usamos el comando para ver los métodos de autenticación de los usuarios de MySQL

mysql>  SELECT user,authentication_string,plugin,host FROM mysql.us;

 y ya esta todo configurado asi que podremos salir usando el comando

mysql> exit

El resumen de pasos en consola se presentan en la siguiente imagen:


4to Paso - Probar instalación


Ahora simplemente nos queda probar que todo marche de forma correcta y para ello usamos el siguiente comando desde la consola de linux

$ systemctl status mysql.service

y vamos a ver algo como lo siguiente

img3

Nota: Si MySQL no esta corriendo, ejecutar el comando

$ sudo systemctl start mysql

Y con esto terminamos. :D

Esperamos que tengan esas bases de datos corriendo y funcionando luego de este sencillo tutorial. Un abrazo grande y gracias por pasarse! ;)