Cómo administrar bases de datos MySQL y usuarios de línea de comandos en Linux

27 feb 2021 5 min di lettura
Cómo administrar bases de datos MySQL y usuarios de línea de comandos en Linux
Indice dei contenuti

Introducción

MySQL es el sistema de administración de bases de datos relacionales de código abierto más popular. El servidor MySQL nos permite crear numerosos usuarios y bases de datos y otorgar los privilegios adecuados para que los usuarios puedan acceder y administrar bases de datos.

Este tutorial explica cómo usar la línea de comandos para crear y administrar bases de datos y usuarios de MySQL o MariaDB.

Prerrequisitos

Antes de comenzar con este tutorial, supongamos que ya tiene un servidor MySQL o MariaDB instalado en su sistema. Todos los comandos se ejecutarán como root.

Para abrir el indicador de MySQL, escriba el siguiente comando e ingrese la contraseña del usuario raíz de MySQL cuando se le solicite:

mysql -u root -p

Crea una nueva base de datos MySQL

Para crear una nueva base de datos MySQL, ejecute el siguiente comando, simplemente reemplace database_name con el nombre de la base de datos que desea crear:

CREATE DATABASE database_name;
Query OK, 1 row affected (0.00 sec)

Si intenta crear una base de datos que ya existe, se mostrará el siguiente mensaje de error:

ERROR 1007 (HY000): Can't create database 'database_name'; database exists

Para evitar errores si existe la base de datos con el mismo nombre que está intentando crear, puede utilizar el siguiente comando:

CREATE DATABASE IF NOT EXISTS database_name;
Query OK, 1 row affected, 1 warning (0.00 sec)

En el resultado anterior, Query OK indica que la consulta fue exitosa y 1 warning indica que la base de datos ya existe y que no se ha creado una nueva base de datos.

Lista de todas las bases de datos MySQL

Puede enumerar todas las bases de datos existentes en nuestro servidor MySQL o MariaDB con el siguiente comando:

SHOW DATABASES;

La salida se verá así:

+--------------------+
 | Database |
 +--------------------+
 | information_schema |
 | database_name |
 | mysql |
 | performance_schema |
 | sys |
 +--------------------+
 5 rows in set (0.00 sec)

Las information_schema, mysql, performance_schema y sys se crean tras la instalación y son el almacenamiento de información sobre todas las demás bases de datos, configuración del sistema, usuarios, permisos y otros datos importantes. Estas bases de datos son necesarias para el correcto funcionamiento de la instalación de MySQL.

Eliminar una base de datos MySQL

Eliminar una base de datos MySQL es tan simple como ejecutar un solo comando. Esta es una acción irreversible y debe realizarse con precaución. Asegúrese de no eliminar una base de datos incorrecta, ya que una vez eliminada, la base de datos no se puede recuperar.

Para eliminar un MySQL o MariaDB, ejecute el siguiente comando:

DROP DATABASE database_name;
Query OK, 0 rows affected (0.00 sec)

Si intenta eliminar una base de datos que no existe, se mostrará el siguiente mensaje de error:

ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist

Para evitar este error puede utilizar el siguiente comando:

DROP DATABASE IF EXISTS database_name;

Cree una nueva cuenta de usuario de MySQL

Una cuenta de usuario en MySQL consta de un nombre de usuario y partes del nombre de host.

Para crear una nueva cuenta de usuario de MySQL, ejecute el siguiente comando, simplemente reemplace database_user con el nombre del usuario que desea crear:

CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password';

En el comando anterior, hemos configurado la parte del nombre de host en localhost que significa que este usuario solo podrá conectarse al servidor MySQL desde el host local (es decir, desde el sistema donde se está ejecutando MySQL Server). Si desea otorgar acceso desde otro host, simplemente cambie localhost a la IP de la máquina remota o use el '%' para la parte del host, lo que significa que la cuenta de usuario podrá conectarse desde cualquier host.

Al igual que cuando trabaja con bases de datos para evitar un error al intentar crear una cuenta de usuario ya existente, puede utilizar:

CREATE USER IF NOT EXISTS 'database_user'@'localhost' IDENTIFIED BY 'user_password';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Cambiar la contraseña de una cuenta de usuario de MySQL

La sintaxis para cambiar la contraseña de una cuenta de usuario de MySQL o MariaDB depende de la versión del servidor que se ejecuta en el sistema.

Puede encontrar la versión de su servidor con el siguiente comando:

mysql --version

Si tiene MySQL 5.7.6 y posterior o MariaDB 10.1.20 y posterior, use el siguiente comando para cambiar la contraseña:

ALTER USER 'database_user'@'localhost' IDENTIFIED BY 'new_password';

Si tiene MySQL 5.7.5 y anterior o MariaDB 10.1.20 y anterior, use:

SET PASSWORD FOR 'database_user'@'localhost' = PASSWORD('new_password');

De cualquier manera, la salida debería verse así:

Query OK, 0 rows affected (0.00 sec)

Enumere todas las cuentas de usuario de MySQL

Podemos enumerar todas las cuentas de usuario de MySQL o MariaDB consultando la tabla mysql.users

SELECT user, host FROM mysql.user;

La salida debería verse así:

+------------------+-----------+
 | user | host |
 +------------------+-----------+
 | database_user | % |
 | database_user | localhost |
 | debian-sys-maint | localhost |
 | mysql.session | localhost |
 | mysql.sys | localhost |
 | root | localhost |
 +------------------+-----------+
 6 rows in set (0.00 sec)

Eliminar la cuenta de usuario de MySQL

Para eliminar una cuenta de usuario, use el siguiente comando:

DROP USER 'database_user@'localhost';

Si intenta eliminar una cuenta de usuario que no existe, se producirá un error.

ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost'

Como cuando trabaja con bases de datos para evitar el error, puede utilizar:

DROP USER IF EXISTS 'database_user'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Otorgar permisos a una cuenta de usuario de MySQL

Hay varios tipos de privilegios que se pueden otorgar a una cuenta de usuario. En esta guía veremos varios ejemplos:

Para asignar todos los privilegios a una cuenta de usuario en una base de datos específica, use el siguiente comando:

GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';

Para asignar todos los privilegios a una cuenta de usuario en todas las bases de datos, use el siguiente comando:

GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';

Para asignar todos los privilegios a una cuenta de usuario en una tabla específica de una base de datos, use el siguiente comando:

GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';

Si desea otorgar solo privilegios específicos a una cuenta de usuario en un tipo de base de datos específico:

GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';

Revocar permisos de una cuenta de usuario de MySQL

Si necesita revocar uno o más privilegios o todos los privilegios de una cuenta de usuario, la sintaxis es casi idéntica a la de otorgarlo. Por ejemplo, si desea revocar todos los privilegios de una cuenta de usuario en una base de datos específica, use el siguiente comando:

REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';

Ver los privilegios de la cuenta de usuario de MySQL

Para encontrar los privilegios otorgados a un tipo específico de cuenta de usuario de MySQL:

SHOW GRANTS FOR 'database_user'@'localhost';
+---------------------------------------------------------------------------+
 | Grants for database_user@localhost |
 +---------------------------------------------------------------------------+
 | GRANT USAGE ON *.* TO 'database_user'@'localhost' |
 | GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |
 +---------------------------------------------------------------------------+
 2 rows in set (0.00 sec)

Conclusión

Este tutorial solo cubre lo básico, pero debería ser un buen comienzo para cualquiera que quiera aprender a administrar bases de datos MySQL y usuarios desde la línea de comandos. También puede consultar el tutorial sobre cómo restablecer una contraseña de root de MySQL en caso de que la haya olvidado.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.