Inicialmente en una configuración de MySQL Server en Linux solo permite conexiones locales y rechaza las conexiones desde cualquier otra dirección.

Esto es lo debes hacer para habilitar las conexiones remotas a MySQL :

Cambiar la configuración del servidor MySQL

Localizamos el archivo de configuración mysqld.cnf y añadimos o modificamos la directiva que permite las conexiones entrantes.

En UBUNTU el archivo esta ubicado en : /etc/mysql/mysql.conf.d/mysqld.cnf

Edición del archivo de configuración de MySQL

Sustituimos la dirección de bind-address , que por defecto es 127.0.0.1 por la dirección de la máquina remota desde donde nos vamos a conectar 192.168.1.xxx o por 0.0.0.0 si queremos habilitar la conexión desde cualquier máquina.

bind-address           = 192.168.1.157

Una vez modificado el archivo reiniciamos el servicio de MySQL

sudo systemctl restart mysql

Permisos de acceso remoto para el usuario de la base de datos

Iniciamos sesión en mysql y ejecutamos el comando

GRANT ALL ON base_datos.* TO usuario@'ip_maquinaremota' IDENTIFIED BY 'contraseña_usuario';

Permitir acceso al puerto mysql en el firewall

sudo ufw allow from 192.168.1.166 to any port 3306