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