domingo, 16 de enero de 2022

MySQL, MariaDB y phpMyAdmin - comandos básicos

MySQL y MariaDB son software de código abierto para la gestión de base de datos que ayuda a los usuarios a almacenar, organizar y obtener datos. MariaDB esta basado en el código fuente de MySQL, por tanto los comandos son validos para ambos servidores de bases de datos.

phpMyAdmin es una herramienta gratuita escrita en lenguaje PHP, creada para administrar las bases de datos de MySQL y MariaDB usando una interfaz gráfica de usuario con formato Web, por tanto para su uso necesitamos un navegador web. phpMyAdmin admite una amplia gama de operaciones para MySQL y MariaDB. Las operaciones de uso mas frecuente (gestión de bases de datos, tablas, columnas, relaciones, índices, usuarios, permisos, etc.) se pueden realizar a través del interfaz gráfica de usuario. Para el resto de operaciones, que no cuenta con la interfaz gráfica de usuario, incluye una consola de comandos para ejecutar directamente cualquier instrucción SQL. Con lo cual phpMyAdmin es 100% funcional.


¿Cómo instalar MySQL o MariaDB en Debian?

Si no lo tienes instalado en tu servidor, se puede instalar usando la versión que existe en los repositorios oficiales de Debian. Actualmente el servidor de bases de datos que usa Debian es MariaDB y consta de dos paquetes:

mariadb-server = Es el servidor de bases de datos de mysql
mariabd-client  = Es el cliente de bases de datos de mysql
phpmyadmin     = Interfaz gráfica de usuario, basada en navegador web

Para instalar el servidor y el cliente usamos el siguiente comando:

apt install mariadb-server mariadb-client phpmyadmin


 

================================================

 

Observaciones muy importantes

Casi todos los comandos MySQL terminan en punto y coma (;), si la frase no termina en punto y coma, el comando no se ejecutará.

Dependiendo del sistema operativo que estés utilizando, tendrá que escribir los comandos en  mayúsculas o en minúsculas.
 

Mayúsculas y minúsculas en MySQL

Algo a tener en cuenta cuando trabajamos con MySQL y utilizamos diferentes sistemas operativos como Windows y Linux, es el comportamiento en cuanto al tratamiento de mayúsculas y minúsculas por MySQL es distinto.


- En Windows: las bases de datos, tablas y usuarios de mysql, NO son sensibles a mayúsculas / minúsculas por lo que dá igual como escribamos las consultas. Los nombres de las bases de datos, tablas y usuarios se guardarán en disco siempre en minúsculas independientemente de como se escriban.

- En Linux: las bases de datos, tablas y usuarios, SI son sensibles a mayúsculas y minúsculas. Los nombres de las bases de datos, tablas y usuarios se guardarán en disco tal y como se han especificado en la creación. Es decir, es sensible a mayúsculas y minúsculas.

- En MacOS: las bases de datos, tablas y usuarios se guardarán en disco tal y como se han especificado en la creación, SI es sensible a mayúsculas / minúsculas PERO a la hora de ejecutar consultas de mysql, el sistema lo convierte a minúsculas por lo que NO es sensible a mayúsculas / minúsculas.


- En este manual: Yo en este manual voy a escribir los COMANDOS de mysql en MAYÚSCULAS y los nombres de las bases de datos, tablas, nombres de usuarios o textos los escribiré en minúsculas. Usando este método es más fácil distinguir los comandos de los datos. A partir de ahora me referiré a mysql (ya que mysql y mariadb usan la misma base, y los comandos a usar son casi los mismos)

================================================


 ¿Cómo conectarse al shell de  MySQL / MariaDB? 

Una vez que haya instalado mysql en tu servidor, puede acceder al shell de mysql usando el siguiente comando en el terminal (este comando siempre lo vamos a escribir en minúsculas):

usuariodebian@debian:~$ mysql -u root -p

Un mensaje nos pedirá escribir la contraseña para el usuario root de mysql (recuerde no confundir con la contraseña del usuario root del servidor, pues aunque ambos se llaman root, uno es del sistema operativo y el otro del servidor de mysql), luego de ingresarla, podremos comenzar a construir, bases de datos, tablas y a crear usuarios en mysql.

Si el inicio de sesión es exitoso, debería ver algo similar a esto:

MariaDB  [(none)] >  

 

 

Agregar usuarios, asignar privilegios y eliminar usuarios

Para administrar usuarios de mysql, usamos los comandos sql para tal propósito:

- CREATE USER y DROP USER crear y eliminar usuarios.

- GRANT y REVOKE asignar privilegios a usuarios y eliminar privilegios a usuarios.

- SHOW GRANTS muestra los privilegios asignados a los usuarios.

 

 

 Crear usuario  CREATE USER 

CREATE USER 'root'@'%' IDENTIFIED BY '123456';

 

CREATE USER 'nuevo_usuario'@'ubicación' IDENTIFIED BY 'contraseña';

Explicación: 

 

- 'nuevo_usuario' es el nombre que le hemos dado al nuevo usuario.

- 'ubicación' hace referecia desde donde podemos conectarnos especificaremos el host del usuario como localhost, o la dirección IP del servidor. localhost es un nombre de host que significa “este equipo”, y mysql trata este nombre de host en particular de manera especial, cuando un usuario con ese host inicia sesión en mysql, intentará conectarse al servidor local utilizando un archivo de socket de Unix. Por lo tanto, localhost se utiliza normalmente cuando planea conectarse implementando SSH a su servidor o cuando está ejecutando el cliente mysql local para conectarse al servidor mysql local.
-La ubicación '%' hace referencia a cualquier equipo, ‘localhost’ al equipo local, pero también se puede especificar la dirección IP o nombre del equipo dentro de una red, entre otros.

- 'contraseña' establece un código de acceso para este usuario.

- Puede haber usuarios que se llamen igual pero que tengan distintas ubicaciones, por ejemplo: 'localhost', otro '%', otro '192.168.1.50', otro 'servidor'


Tienes que reemplazar estos valores que estan entre comillas ' ' por los tuyos.

 

MariaDB  [(none)] > CREATE USER 'root'@'%' IDENTIFIED BY '123456';  

 

 

 Eliminar usuario  DROP USER 

 

Para eliminar un usuario, usamos el comando DROP USER. Es muy importante asegurarse el nombre de usuario a borrar, a sin como su ubicación. Para no borrar un usuario por error.

 

MariaDB  [(none)] > DROP USER 'root'@'192.168.1.50';
MariaDB  [(none)] > DROP USER 'root'@'%.example.com';
MariaDB  [(none)] > DROP USER 'root'@'localhost';
MariaDB  [(none)] > DROP USER 'root'@'%';

 

 

 Asignar privilegios  GRANT 


GRANT tipo_de_permiso ON nombre_base_datos . nombre_de_la_tabla TO 'nombre_de_usuario'@'localhost';

 

GRANT ALL PRIVILEGES ON * . * TO 'nuevo_usuario'@'ubicación';

 

Para poder acceder a los objetos de una base de datos se necesitan tener privilegios (permisos).

- Los privilegios sobre objetos permiten acceder y realizar cambios en las tablas  de la base de datos. Por ejemplo, INSERT, SELECT, UPDATE y DELETE, son privilegios sobre objetos.

- Los privilegios de sistema son los que dan derecho a ejecutar un tipo de comando sql o a realizar alguna acción sobre objetos de un tipo especificado, por ejemplo, CREATE USER, ALTER, CREATE o CREATE VIEW.

- Un privilegio o permiso se otorga con el comando GRANT (conceder) una vez creado el usuario con CREATE USER

- Los asteriscos (*) en este comando se refieren a la base de datos y a la tabla respectivamente a las que el usuario puede acceder. Esto es debido a que el asterisco * es un comodín y representa todo, en este caso: todas las bases de datos y todas las tablas.


=================================================
Observación: 

 

En versiones de mysql anteriores a la versión 8.x, el comando GRANT también permitía crear a un usuario en el momento de concederle permisos.

 

GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

=================================================

 

A continuación una lista de permisos que un usuario podría tener:

- ALL PRIVILEGES: permite que un usuario acceda completamente a la base de datos designada (o si no se selecciona una base de datos en particular, el usuario tendría acceso a todo el sistema).
- CREATE: permite a los usuarios crear nuevas tablas o bases de datos.
- DROP: permite eliminar tablas o bases de datos.
- DELETE: permite eliminar filas de tablas.
- INSERT: permite insertar filas en tablas.
- SELECT: permite consultar información en bases de datos.
- UPDATE: permite actualizar filas en tablas.
- GRANT OPTION: permite otorgar o suprimir privilegios de otros usuarios, esto le daría a un usuario en concreto, todo el acceso a una base de datos designada (o si no se selecciona una base de datos en particular, a todo el sistema).
 

MariaDB  [(none)] > GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';

 

MariaDB  [(none)] > GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;


MariaDB  [(none)] > GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost' WITH GRANT OPTION

 

 

 Eliminar privilegios  REVOKE 

 

REVOKE tipo_de_permiso] ON nombre_base_datos . nombre_de_la_tabla FROM 'nombre_usuario'@'localhost';

 

REVOKE UPDATE, DELETE ON *.* FROM 'usuario'@'ubicación';

 

Si necesitamos eliminar un permiso, la estructura es casi idéntica a la anterior:

A continuación una lista de permisos que un usuario se le puede quitar:

- ALL PRIVILEGES: permite que un usuario acceda completamente a la base de datos designada (o si no se selecciona una base de datos en particular, el usuario tendría acceso a todo el sistema).
- CREATE: permite a los usuarios crear nuevas tablas o bases de datos.
- DROP: permite eliminar tablas o bases de datos.
- DELETE: permite eliminar filas de tablas.
- INSERT: permite insertar filas en tablas.
- SELECT: permite consultar información en bases de datos.
- UPDATE: permite actualizar filas en tablas.
- GRANT OPTION: permite dar o quitar privilegios a otros usuarios, esto le daría a un usuario en concreto, todo el acceso a una base de datos designada (o si no se selecciona una base de datos en particular, a todo el sistema).


MariaDB  [(none)] > REVOKE DELETE ON *.* FROM 'diego'@'localhost';

MariaDB  [(none)] > REVOKE DROP ON *.* FROM 'diego'@'localhost';

 

 

 Ver privilegios  SHOW GRANT 


SHOW GRANTS FOR 'admin'@'localhost';

Para ver los privilegios de una cuenta, use SHOW GRANTS:

MariaDB  [(none)] > SHOW GRANTS FOR 'admin'@'localhost';
+----------------------------------------------------------------------------------+
 | Grants for admin@localhost                                                     |
+----------------------------------------------------------------------------------+
 | GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost' |
+----------------------------------------------------------------------------------+

 


 Cambiar contraseña de usuario  ALTER USER 

 

ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contraseña';


SET PASSWORD FOR 'root'@'localhost' = PASSWORD ('nueva_contraseña');

o desde la consola de linux


usuariodebian@debian:~$ cd /usr/local/mysql/bin
usuariodebian@debian:~$ ./mysqladmin -u root password 'nueva_contraseña


MariaDB  [(none)] > ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contraseña';

MariaDB  [(none)] > SET PASSWORD FOR 'root'@'localhost' = PASSWORD ('nueva_contraseña');



 Guardar los cambios  FLUSH PRIVILEGES 

 

FLUSH PRIVILEGES;

 

Una vez que haya terminado de:

- Crear usuario
- Eliminar usuario
- Dar permisos
- Quitar permisos

Siempre asegúrese de volver a cargar todos los privilegios.

MariaDB  [(none)] > FLUSH PRIVILEGES;




 Resumen de comandos  usados 

 

usuariodebian@debian:~$ mysql -u root -p

MariaDB  [(none)] > CREATE USER 'root'@'%' IDENTIFIED BY '123456'; 

MariaDB  [(none)] > DROP USER 'root'@'localhost';

MariaDB  [(none)] > GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost' WITH GRANT OPTION;

MariaDB  [(none)] > REVOKE DELETE ON *.* FROM 'diego'@'localhost';

MariaDB  [(none)] > SHOW GRANTS FOR 'admin'@'localhost';

MariaDB  [(none)] > ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contraseña';

MariaDB  [(none)] > FLUSH PRIVILEGES;

 


 Vamos a realizar los mismos pasos, pero ahora desde phpMyAdmin 



 ¿Cómo conectarse a  phpMyAdmin 

 

Abrimos un navegador cualquiera, en este manual hemos usado Firefox. Y ponemos la siguiente dirección: http://localhost/phpmyadmin

 

 

Ponemos los datos de usuario y contraseña, en este manual vamos a usar el usuario: root



 Crear usuario  CREATE USER 


Ahora vamos a realizar el proceso de dar de alta un usuario desde phpmyadmin.



Después de logearnos nos aparece la siguiente ventana de información.
Pulsamos en la pestaña Cuentas de usuario



Ahora pulsamos abajo, en la opción: Agregar cuenta de usuario



Rellenamos los campos: Nombre de usuario, Nombre de host, Contraseña y Volver a escribir contraseña.



Bajamos un poco en esta página, podemos marcar las dos opciones que nos aparecen en el apartado: Base de datos para la cuenta de usuario. 

En este manual las he marcado, pero eso depende de cada caso particular.



Seguimos bajando en la página, hasta llegar al apartado: Privilegios globales


 

En este manual hemos seleccionado: Todos los permisos.




Seguimos bajando hasta llegar al apartado: SSL

En este manual no vamos a usar el certificado SSL, pero cada uno que elija lo que necesite.




Y por último pulsamos en Continuar



y observamos como se ha creado el usuario y la base de datos con el mismo nombre, ya que anteriormente lo seleccionamos.




 Cambiar contraseña de usuario  ALTER USER 

 

Para cambiar la contraseña de un usuario, tenemos que hacer clic en Editar privilegios de dicho usuario.

 


Seleccionamos Cambio de contraseña




En el apartado de contraseñas, introducimos la nueva contraseña, volvemos a escribir la nueva contraseña y por ultimo pulsamos en Continuar.




Ya podemos observar como hemos cambiado con éxito la contraseña










No hay comentarios: