Самый безопасный удалённый доступ — через SSH-туннель. Прямой TCP/3306 разрешайте лишь приватной сети или конкретному адресу, с TLS и отдельным пользователем.

Важно: Никогда не используйте 'user'@'%' и публичное правило 3306 без сетевого ограничения и TLS.

1. Вариант A: SSH-туннель

ssh -N -L 3307:127.0.0.1:3306 admin@db-server
mysql -h 127.0.0.1 -P 3307 -u appuser -p

2. Вариант B: ограниченное прослушивание

В конфигурации mysqld задайте приватный адрес сервера в bind-address, затем проверьте конфигурацию и перезапустите MySQL.

3. Создайте узкого пользователя

CREATE USER 'report'@'10.0.0.%' IDENTIFIED BY 'LONG_RANDOM_PASSWORD' REQUIRE SSL;
GRANT SELECT ON analytics.* TO 'report'@'10.0.0.%';

4. Ограничьте firewall

sudo ufw allow from 10.0.0.0/24 to any port 3306 proto tcp
sudo ufw status numbered

Официальная документация