Para exponer MySQL a cualquier otra cosa que no sea localhost, deberá tener la siguiente línea
Para mysql versión 5.6 y anteriores
descomentado /etc/mysql/my.cnf
y asignado a la dirección IP de su computadora y no loopback
Para mysql versión 5.7 y superior
descomentado /etc/mysql/mysql.conf.d/mysqld.cnf
y asignado a la dirección IP de su computadora y no loopback
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
O agregue un
bind-address = 0.0.0.0
si no desea especificar la IP
Luego detenga y reinicie MySQL con la nueva entrada my.cnf. Una vez ejecutado, vaya a la terminal e ingrese el siguiente comando.
lsof -i -P | grep :3306
Eso debería devolver algo como esto con su IP real en los xxx
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
Si la declaración anterior se devuelve correctamente, podrá aceptar usuarios remotos. Sin embargo, para que un usuario remoto se conecte con los privilegios correctos, debe tener ese usuario creado tanto en localhost como en '%' como en.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
luego,
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
y finalmente,
FLUSH PRIVILEGES;
EXIT;
Si no ha creado el mismo usuario que el anterior, cuando inicie sesión localmente, puede heredar los privilegios básicos de localhost y tener problemas de acceso. Si desea restringir el acceso que tiene myuser, deberá leer la sintaxis de la declaración GRANT AQUÍ. Si supera todo esto y aún tiene problemas, publique algún resultado de error adicional y las líneas apropiadas de my.cnf.
NOTA: Si lsof no regresa o no se encuentra, puede instalarlo AQUÍ según su distribución de Linux. No necesita lsof para que las cosas funcionen, pero es extremadamente útil cuando las cosas no funcionan como se esperaba.