Para expor o MySQL a qualquer coisa que não seja localhost você terá que ter a seguinte linha
Para mysql versão 5.6 e inferior
descomentado /etc/mysql/my.cnf
e atribuído ao endereço IP do seu computador e não loopback
Para mysql versão 5.7 e superior
descomentado /etc/mysql/mysql.conf.d/mysqld.cnf
e atribuído ao endereço IP do seu computador e não loopback
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
Ou adicione um
bind-address = 0.0.0.0
se não quiser especificar o IP
Em seguida, pare e reinicie o MySQL com a nova entrada my.cnf. Depois de executar, vá para o terminal e digite o seguinte comando.
lsof -i -P | grep :3306
Isso deve retornar algo assim com o seu IP real no xxx's
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
Se a instrução acima retornar corretamente, você poderá aceitar usuários remotos. No entanto, para um usuário remoto se conectar com os privilégios corretos, você precisa ter esse usuário criado em localhost e em '%'.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
então,
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
e finalmente,
FLUSH PRIVILEGES;
EXIT;
Se você não tiver o mesmo usuário criado como acima, ao fazer logon localmente, você pode herdar os privilégios de localhost base e ter problemas de acesso. Se você quiser restringir o acesso que meu usuário tem, então você precisa ler a sintaxe da instrução GRANT AQUI. Se você passou por tudo isso e ainda tem problemas, poste alguma saída de erro adicional e as linhas apropriadas de my.cnf.
NOTA: Se lsof não retornar ou não for encontrado, você pode instalá-lo AQUI com base em sua distribuição Linux. Você não precisa do lsof para fazer as coisas funcionarem, mas é extremamente útil quando as coisas não estão funcionando como esperado.