Crear un usuario en MySQL y otorgar permisos de acceso remoto

En MySQL, crear un usuario con acceso remoto y otorgarle permisos a una base de datos específica es una necesidad común. Este artículo describe cómo realizar esta operación en detalle.

Paso 1: Iniciar sesión en MySQL

Primero, inicia sesión en MySQL como administrador (por ejemplo, usuario root):

Terminal window
1
mysql -u root -p

Paso 2: Crear la base de datos y establecer la codificación

Crea una base de datos llamada project y utiliza la codificación utf8mb4:

1
CREATE DATABASE project CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Paso 3: Crear un usuario y permitir el acceso desde cualquier dirección IP

Crea un usuario llamado myuser y permite el acceso desde cualquier dirección IP. Establece una contraseña, por ejemplo, myuser_password:

1
CREATE USER 'myuser'@'%' IDENTIFIED BY 'myuser_password';

Paso 4: Otorgar permisos al usuario

Otorga todos los permisos en la base de datos project al usuario myuser:

1
GRANT ALL PRIVILEGES ON project.* TO 'myuser'@'%';

Paso 5: Actualizar los permisos

Actualiza la tabla de permisos para que los cambios surtan efecto:

1
FLUSH PRIVILEGES;

Script SQL completo

A continuación, se muestra el script SQL completo que cubre todos los pasos para crear la base de datos, el usuario y otorgar los permisos:

1
-- Crear la base de datos y establecer la codificación
2
CREATE DATABASE project CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3
4
-- Crear el usuario y permitir el acceso desde cualquier dirección IP
5
CREATE USER 'myuser'@'%' IDENTIFIED BY 'myuser_password';
6
7
-- Otorgar permisos al usuario
8
GRANT ALL PRIVILEGES ON project.* TO 'myuser'@'%';
9
10
-- Actualizar los permisos
11
FLUSH PRIVILEGES;

Eliminar un usuario existente

Si ya existe un usuario llamado myuser y deseas recrearlo, primero elimina el usuario existente:

1
DROP USER 'myuser'@'localhost';
2
DROP USER 'myuser'@'%';
3
4
FLUSH PRIVILEGES;

Configurar MySQL para permitir el acceso remoto

Asegúrate de que el archivo de configuración de MySQL permita el acceso remoto. Edita el archivo de configuración de MySQL (por ejemplo, /etc/mysql/mysql.conf.d/mysqld.cnf o /etc/my.cnf) y encuentra la siguiente línea:

1
bind-address = 127.0.0.1

Coméntala o modifícala a:

1
bind-address = 0.0.0.0

Luego, reinicia el servicio de MySQL:

Terminal window
1
sudo systemctl restart mysql

Configurar el firewall

Si tu servidor tiene un firewall, asegúrate de permitir el puerto de MySQL (usualmente 3306) a través del firewall. Por ejemplo, utilizando ufw:

Terminal window
1
sudo ufw allow 3306/tcp

Siguiendo estos pasos, podrás crear un usuario con acceso remoto a una base de datos MySQL y otorgarle los permisos necesarios para operar en la base de datos específica.