sql >> Base de Datos >  >> RDS >> Mysql

Gestión de usuarios MySQL

MySQL 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.

Crear usuario MySQL

Al instalar MySQL, el usuario raíz (administrador de MySQL) es el primer usuario que se crea. El usuario raíz 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 garantiza que si la seguridad de ese usuario se ve comprometida, el impacto es mínimo o manejable.

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

Para Crear un Usuario, se requiere tener un privilegio global (ser usuario root) de la sentencia “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 muestra 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';

El nombre_cuenta 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 en el 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';

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 sentencia GRANT

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

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

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

3. Cree un nuevo usuario usando el siguiente comando

create user 'foss'@'localhost' identified by 'foss12345'; 

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

select user from mysql.user;

A partir del resultado que se muestra, el usuario 'foss' se ha creado correctamente.

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

Otorgando 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: concede 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 que la cuenta de usuario elimine 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. SELECCIONA: permite que la cuenta de usuario lea una base de datos

7. ACTUALIZACIÓN: 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';

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

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';

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

FLUSH PRIVILEGES;

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

SHOW GRANTS FOR 'foss'@'localhost';

Usuario de eliminación de MySQL

La declaración MySQL Drop User 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 instrucción Drop User, debe tener un privilegio global o el privilegio DELETE para el esquema del sistema MySQL.

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

DROP USER 'foss'@'localhost';

Nota: El nombre de cuenta en el ejemplo anterior se identifica como nombredeusuario@nombredehost. 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 cuando se elimina un usuario existente de la base de datos del servidor MySQL;

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

2. Escriba la contraseña de la cuenta, luego presione Entrar

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

DROP USER 'fosslinux'@'localhost';

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:

5. El usuario Drop también se puede usar para eliminar más de una cuenta de usuario a la vez. Para hacerlo, separa los nombres_de_la_cuenta usando comas.

Nota: Como ya habíamos eliminado a los usuarios, crearemos dos usuarios utilizando los conceptos de creación de usuarios (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:

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

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;

Tenga en cuenta que la instrucción DROP no puede cerrar ninguna sesión de usuario abierta automáticamente. Cuando se ejecuta la declaración DROP mientras una sesión de 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 próximo intento del usuario no podrá volver a iniciar sesión.

MySQL mostrar usuarios/listar todos los usuarios

Para administrar una base de datos en MySQL, debe ver la lista de todas las cuentas de usuario en una base de datos. La gente asume que hay un comando MOSTRAR USUARIOS similar a MOSTRAR BASE DE DATOS o MOSTRAR TABLAS 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 de usuario de la tabla de usuarios del servidor de base de datos MySQL.

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

use mysql;
SELECT user FROM user;

Si desea ver más información sobre 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:

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;

El siguiente resultado aparecerá después de la ejecución exitosa de la consulta:

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();

El siguiente resultado aparecerá después de ejecutar con éxito cualquiera de los comandos anteriores.

Mostrar usuario conectado actualmente

Puede ver un usuario que actualmente está conectado al servidor de la 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:

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 de 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 cualquier cuenta de usuario, recuerda tener en cuenta la siguiente información:

  • Detalles de la cuenta de usuario a cambiar
  • 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 puede conectarse 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 ACTUALIZAR
  2. Declaración ESTABLECER CONTRASEÑA
  3. Declaración ALTER USER

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

Después de ejecutar la instrucción UPDATE, usamos la instrucción FLUSH PRIVILEGE para recargar privilegios desde 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 el localhost con la contraseña foss12345, ejecuta 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 usuario 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 ACTUALIZAR 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 nuevas o más recientes, salte a los otros métodos.

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

Si desea cambiar la contraseña de otra cuenta, debe tener el privilegio de ACTUALIZAR. La instrucción utiliza la cuenta de usuario en el siguiente formato:nombredeusuario@hostlocal

No es necesario volver a cargar los privilegios de las tablas de despotricar de la base de datos MySQL utilizando FLUSH PRIVILEGES. Para cambiar la contraseña de la cuenta de usuario (foss) mediante 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 la contraseña de la cuenta de usuario usando la instrucción ALTER USER

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

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';

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 exhaustivamente todos los aspectos relacionados con la administració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 a través de la sección de comentarios para obtener ayuda. Gracias por leer.