Gestión de usuarios MySQL | FOSS Linux

METROySQL se encuentra entre los administradores de bases de datos más populares del mundo. Contiene muchas características que lo hacen confiable, eficiente y robusto. Su máxima fiabilidad se consigue si se utiliza correctamente. Crear usuarios con permisos limitados en la base de datos es una de las formas más fáciles y confiables de aumentar la seguridad de MySQL.

Índice

MySQL crear usuario

Al instalar MySQL, el usuario root (administrador de MySQL) es el primer usuario que se crea. El usuario root puede hacer cualquier cosa en la base de datos MySQL. Es conveniente que otras personas accedan a su base de datos utilizando esta cuenta.

Los usuarios malintencionados pueden intentar iniciar sesión como usuarios raíz para robar la información alojada o destruir el servicio junto con los datos. Por lo tanto, el administrador del sistema debe crear usuarios con permisos específicos en la base de datos. Esto asegura que si la seguridad de ese usuario se ve comprometida, el impacto es mínimo o manejable.

La declaración MySQL Create User le permite crear una nueva cuenta de usuario en el servidor de la base de datos. Proporciona autenticación, límite de recursos, funciones y propiedades de administración de contraseñas para las nuevas cuentas. El estado de cuenta también nos permite controlar las cuentas que deben bloquearse o desbloquearse.

Para crear un usuario, se requiere tener un privilegio global (ser un usuario root) de la declaración "CREATE USER" o el privilegio INSERT para el esquema del sistema MySQL. Aparece un error si intenta crear un usuario que ya existe, pero si usa la cláusula "SI NO EXISTE", la declaración da una advertencia para cada usuario nombrado que ya existe en lugar de un mensaje de error.

Para crear un usuario no root y otorgarle privilegios específicos para acceder y modificar la base de datos, usamos la siguiente sintaxis:

CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';
Uso de la declaración Si no existe
Utilizando la declaración Si no existe.

Account_name tiene dos partes; el nombre de usuario y el nombre de host, separados por el símbolo @. El nombre de usuario es el nombre del usuario, mientras que el nombre de host es el nombre del host desde el cual el usuario puede conectarse con el servidor de la base de datos.

username@hostname

El nombre de host es opcional. Si no se proporciona el nombre de host, el usuario puede conectarse desde cualquier host del servidor. Un nombre de cuenta de usuario sin un nombre de host se puede escribir como nombre de usuario @%

CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';
Escribir un nombre de cuenta sin el nombre de host
Escribir un nombre de cuenta sin el nombre de host.

Tenga en cuenta que la declaración de creación de usuario crea un nuevo usuario con acceso completo. para otorgar privilegios al usuario, use la declaración GRANT

Utilice los siguientes pasos para crear un nuevo usuario en la base de datos MySQL:

1. Con la herramienta de cliente MySQL, abra el servidor MySQL

2. Escriba la contraseña y luego presione Entrar.

3. Cree un nuevo usuario con el siguiente comando

create user 'foss'@'localhost' identified by 'foss12345'; 
Creando un nuevo usuario
Creando un nuevo usuario

4. Utilice el siguiente comando para mostrar a los usuarios en el servidor MySQL

select user from mysql.user;
Mostrar usuarios en MySQL Server
Mostrar usuarios en MySQL Server

A partir de la salida que se muestra, el usuario 'foss' se ha creado con éxito.

5. Ahora use la cláusula IF NOT EXISTS con la instrucción CREATE USER ejecutando el siguiente comando:

Crear usuario usando la declaración Si no existe
Crear usuario usando la declaración Si no existe

Otorgar privilegios al nuevo usuario de MySQL

Algunos de los privilegios más comunes proporcionados por el servidor MySQL a un nuevo usuario incluyen;

1. TODOS LOS PRIVILEGIOS: permite todos los privilegios a una nueva cuenta de usuario

2. CREAR: permite que la cuenta de usuario cree bases de datos y tablas

3. SOLTAR: permite a la cuenta de usuario eliminar bases de datos y tablas

4. ELIMINAR: permite que la cuenta de usuario elimine filas de una tabla específica

5. INSERTAR: permite que la cuenta de usuario inserte filas en una tabla específica

6. SELECCIONE: permite que la cuenta de usuario lea una base de datos

7. ACTUALIZAR: permite que una cuenta de usuario actualice las filas de la tabla

Ejecute el siguiente comando para otorgar todos los privilegios a un usuario

GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';
Otorga todos los privilegios
Otorga todos los privilegios

Ejecute el siguiente comando para otorgar privilegios específicos a un usuario recién creado,

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';
Otorgar privilegios específicos
Otorgar privilegios específicos

Para vaciar todos los privilegios asignados a un usuario, ejecute el siguiente comando.

FLUSH PRIVILEGES;
Elimina todos los privilegios
Elimina todos los privilegios

Para ver los privilegios existentes asignados a un usuario, ejecute el siguiente comando.

SHOW GRANTS FOR 'foss'@'localhost';
Mostrar privilegios existentes
Mostrar privilegios existentes

Usuario de MySQL Drop

La declaración de usuario de MySQL Drop le permite eliminar una o más cuentas de usuario y sus privilegios del servidor de la base de datos. Si la cuenta de usuario no existe en el servidor de la base de datos, devolverá un error.

Para usar la declaración Drop User, debe tener un privilegio global o el privilegio DELETE para el esquema del sistema MySQL.

La sintaxis para eliminar por completo las cuentas de usuario del servidor de la base de datos es la siguiente:

DROP USER 'foss'@'localhost';
Eliminar usuario
Eliminar usuario

Nota: El nombre de la cuenta en el ejemplo anterior se identifica como username @ hostname. El nombre de usuario es el nombre de la cuenta que desea eliminar del servidor de la base de datos y el nombre de host es el nombre del servidor de la cuenta de usuario. por ejemplo, 'foss @ localhost'. foss es el nombre de usuario, mientras que localhost es el nombre de host.

Los siguientes son los pasos a seguir para eliminar un usuario existente de la base de datos del servidor MySQL;

1. Con la herramienta de cliente MySQL, abra el servidor MySQL

2. Escriba la contraseña de la cuenta y luego presione Intro.

3. Para eliminar una cuenta de usuario, ejecute el siguiente comando

DROP USER 'fosslinux'@'localhost';
Eliminar usuario fosslinux
Eliminar usuario fosslinux

4. Ejecute el siguiente comando para mostrar a los usuarios

select user from mysql.user; 

Obtendrá una salida en la que el nombre de usuario fosslinux no estará presente, como se muestra a continuación:

Mostrar usuarios existentes después de eliminar usuario de fosslinux
Muestra los usuarios existentes después de eliminar los usuarios de fosslinux.

5. El usuario Drop también se puede utilizar para eliminar más de una cuenta de usuario a la vez. Para hacer eso, separe los account_names usando comas.

Nota: Como ya habíamos eliminado a los usuarios, crearemos dos usuarios usando los conceptos de crear usuario (fosslinuxtuts y fosslinux @%). Después de eso, ejecutaremos el comando en el paso 4 para mostrar los usuarios existentes como se muestra a continuación:

Crear y mostrar usuarios existentes
Crear y mostrar usuarios existentes

Ahora suelte a los dos usuarios simultáneamente usando el siguiente comando: Ejecute el siguiente comando para descartar a ambos usuarios:

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;
Suelta a dos usuarios simultáneamente
Suelta a dos usuarios simultáneamente

Tenga en cuenta que la declaración DROP no puede cerrar ninguna sesión de usuario abierta automáticamente. Cuando se ejecuta la instrucción DROP mientras la sesión de una cuenta de usuario está activa, el comando no la afecta hasta que se cierra la sesión. La cuenta de usuario se elimina solo cuando se cierra la sesión y el siguiente intento del usuario no podrá volver a iniciar sesión.

MySQL muestra usuarios / enumera todos los usuarios

Para administrar una base de datos en MySQL, necesita ver la lista de todas las cuentas de los usuarios en una base de datos. La gente asume que hay un comando SHOW USERS similar a SHOW DATABASE o SHOW TABLES para mostrar la lista de todos los usuarios disponibles en el servidor de la base de datos. Desafortunadamente, el servidor MySQL no tiene un comando SHOW USERS para mostrar una lista de todos los usuarios en el servidor MySQL. Entonces, en su lugar, usamos la siguiente consulta para ver la lista de todos los usuarios en el servidor de la base de datos:

Select user from mysql.user;

Después de ejecutar el comando, obtendrá los datos del usuario de la tabla de usuarios del servidor de base de datos MySQL.

Mostrar todos los usuarios existentes
Muestra todos los usuarios existentes.

Nota: En este ejemplo, usaremos la base de datos MySQL. Seleccione la base de datos ejecutando el comando a continuación, luego use la instrucción select from para verificar los usuarios existentes como se muestra en la imagen a continuación:

use mysql;
SELECT user FROM user;
Seleccione la base de datos y verifique los usuarios existentes
Seleccione la base de datos y verifique los usuarios existentes

Si desea ver más información en la tabla de usuarios, ejecute el siguiente comando:

DESC user;

El comando dará el siguiente resultado que enumera todas las columnas disponibles de la base de datos mysql.user:

Describe usuario
Describe usuario

Para obtener información seleccionada como el nombre de host, el estado de vencimiento de la contraseña y el bloqueo de la cuenta, ejecute la siguiente consulta:

 SELECT user, host, account_locked, password_expired FROM user;

La siguiente salida aparecerá después de la ejecución exitosa de la consulta:

Obtener información de usuario
Obtener información de usuario

Mostrar usuario actual

Puede obtener información del usuario actual utilizando la función user () o current_user () como se muestra a continuación:

Select user(); 

O

Select current_user();

La siguiente salida aparecerá después de ejecutar con éxito cualquiera de los comandos anteriores.

Comandos que muestran los usuarios actuales
Comandos que muestran los usuarios actuales

Mostrar usuario registrado actualmente

Puede ver un usuario que está actualmente conectado al servidor de base de datos usando el siguiente comando en el servidor MySQL:

SELECT user, host, db, command FROM information_schema.processlist;

Los comandos anteriores generan una pantalla similar a la que se muestra a continuación:

Mostrar usuario registrado actualmente
Mostrar usuario registrado actualmente

Cómo cambiar la contraseña de usuario de MySQL

Los registros de usuario de MySQL contienen la información de inicio de sesión, los privilegios de la cuenta y la información del host para que la cuenta MySQL acceda y administre la base de datos. La información de inicio de sesión incluye el nombre de usuario y la contraseña. Por lo tanto, puede ser necesario cambiar la contraseña de usuario en la base de datos MySQL.

Para cambiar la contraseña de una cuenta de usuario, recuerde tener en cuenta la siguiente información:

  • Detalles de la cuenta de usuario que se cambiarán
  • La aplicación es utilizada por la cuenta de usuario cuya contraseña se va a cambiar. Si la contraseña de la cuenta de usuario se ha restablecido sin cambiar una cadena de conexión de la aplicación, la aplicación no se puede conectar con el servidor de la base de datos.

MySQL le permite cambiar la contraseña de la cuenta de usuario de tres formas diferentes:

  1. Declaración UPDATE
  2. Declaración SET PASSWORD
  3. Declaración ALTER USER

Cambiar la contraseña de la cuenta de usuario mediante la declaración UPDATE

Después de ejecutar la instrucción UPDATE, usamos la instrucción FLUSH PRIVILEGE para recargar los privilegios de la tabla de concesión de la base de datos MySQL.
Suponga que desea cambiar la contraseña de una cuenta de usuario foss que se conecta desde localhost con la contraseña foss12345, ejecute el siguiente comando:

USE mysql;
UPDATE user SET password=password('kip12345') WHERE user="foss"; 
FLUSH PRIVILEGES;

La declaración anterior no funcionará en MySQL versión 5.7.6 o superior, ya que la tabla de usuarios de MySQL contiene la columna de cadena de autenticación que almacena solo la contraseña. Las versiones superiores tienen la columna de cadena de autenticación en la declaración UPDATE como se muestra en la siguiente declaración:

USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user="foss";

FLUSH PRIVILEGES;

Nota: Este método solo funciona con versiones anteriores de MySQL. Por lo tanto, si tiene versiones de MySQL más recientes o más recientes, pase a los otros métodos.

Cambiar la contraseña de la cuenta de usuario mediante la instrucción SET PASSWORD

Si desea cambiar la contraseña de otra cuenta, debe tener el privilegio ACTUALIZAR. La declaración usa la cuenta de usuario en el siguiente formato: nombre de usuario @ localhost

No es necesario utilizar la recarga de privilegios de las tablas rant de la base de datos MySQL utilizando FLUSH PRIVILEGES. Para cambiar la contraseña de la cuenta de usuario (foss) usando la declaración SET PASSWORD, use la siguiente declaración:

SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');

Si está utilizando MySQL versión 5.7.6 o superior, la declaración anterior está obsoleta y no funcionará en versiones futuras. En su lugar, utilice la siguiente declaración;

SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';
Cambiar contraseña usando la declaración Establecer contraseña
Cambiar contraseña usando la declaración Establecer contraseña

Cambiar la contraseña de la cuenta de usuario mediante la instrucción ALTER USER

MySQL usa la instrucción ALTER USER con la cláusula IDENTIFIED BY. Para hacer eso, usa la siguiente sintaxis:

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';
Cambiar la contraseña usando la declaración de usuario Alter
Cambiar la contraseña usando la declaración de usuario Alter

Es posible que deba restablecer la contraseña de la cuenta raíz de MySQL. Para hacer esto, puede forzar la detención y luego reiniciar el servidor de la base de datos MySQL sin usar la validación de la tabla de permisos.

Conclusión

Este artículo ha cubierto de forma exhaustiva todos los aspectos relacionados con la gestión de usuarios de MySQL. Creemos que es lo suficientemente detallado como para brindarle soluciones a sus problemas. Si encuentra errores o dificultades al mostrar a los usuarios que usan MySQL, comuníquese con la sección de comentarios para obtener ayuda. Gracias por leer.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir