Para começar, há momentos em que você precisa criar um aplicativo com uma conexão com o banco de dados. Isso é feito para não se aprofundar no desenvolvimento do back-end e se concentrar no front-end devido à falta de mãos e habilidades. Não presumo dizer que minha solução será segura, mas funciona.
Como não gosto de pagar pela hospedagem, usei a rede no meu trabalho, há um IP branco lá. Aqui está sua estrutura:

Eu tenho acesso a vários computadores com mais precisão ao 192.168.1.2 (também conhecido como 192.168.0.2). O Linux está lá e ao 192.168.0.3 no Windows. Em geral, para o meu aplicativo, escolhi o mysql e verifiquei o que há no Linux. Ele já estava instalado lá, mas ninguém sabe a senha e quem sabia se esqueceu (quem trabalhou antes de mim). Tendo descoberto que ninguém precisa dele, eu o apaguei e tentei reinstalá-lo. Não havia memória suficiente e, como eu precisaria conectar um monitor e teclado com um mouse para corrigir esse erro, decidi encerrar o negócio. Além disso, uma máquina Windows é muito mais poderosa e, além de tudo, eu mesma a tenho no meu laptop em casa. Em princípio, não descreverei a instalação em si, há vários manuais e vídeos sobre ela. Depois de instalar o mysql em uma máquina Windows, decidi fazer backup das tabelas do laptop para a estação de trabalho.
Isso é feito assim (no meu caso):
mysqldump -uroot -p your_base > dump_file.sql
Em seguida, no novo banco de dados, criamos o banco de dados e restauramos o backup na máquina “nova”.
mysql -h localhost -u root -p
create database your_base; use your_base;
mysql -uroot -p your_base < dump_file.sql
show tables;
O arquivo de backup deve ser colocado em uma nova máquina e, se não estiver no diretório do utilitário, o caminho completo para ele. (Acabei de carregar um backup no github e o clonei em uma nova máquina). Eu acrescentaria como as tabelas são criadas, mas não salvei as capturas de tela e acho que não é difícil, mesmo para um estudante de 2 a 3 anos.
Quando eu restaurei todas as tabelas, é hora de tornar acessível o acesso remoto ao banco de dados. Em geral, esses comandos não levaram ao sucesso (emitiram apenas permissões de leitura para selecionar)
create user 'client'@'%' IDENTIFIED by 'client'; grant select on your_base . * to 'client'@'%'; flush privileges;
Mais precisamente, eu poderia me conectar ao banco de dados apenas com uma equipe,
mysql -h localhost -u client -pclient
mas este não podia
mysql -h 192.168.0.3 -u client -pclient
não me agradou e não pôde se conectar através deste endereço e a partir da raiz.
O programa mysql workbench ajudou nas configurações, alterou localhost para% e funciona, embora o cliente não tenha ajudado. Agora você pode se conectar ao banco de dados no console ou no código de qualquer endereço.

Você também precisa criar uma rede doméstica ou corporativa e desativar o firewall do Windows. Caso contrário, você não poderá executar ping nesta máquina (não que ela se conecte ao banco de dados).
Metade do trabalho está concluído, então eu preciso ser capaz de me conectar ao banco de dados em casa.
Como pode ser visto no diagrama de rede, você precisa ir de 192.168.0.3 para 192.168.1.1 (roteador) para a Internet, vamos na direção oposta. Configure a rota de 192.168.1.1 a 192.168.1.2 assim:

Em geral, a imagem não aparece - vou escrever com as mãos:
route add 192.168.0.0 mask 255.255.255.0 gateway 192.168.1.2
Isso pode ser feito apenas em uma sub-rede, ou seja, você não pode enviá-lo imediatamente para o endereço 192.168.0.2 ou 192.168.0.3
Isso é necessário para que o roteador saiba onde a sub-rede 192.168.0.0/24 está localizada (aprenda o básico de redes, isso é útil).
Agora adicione a porta probros 3306 (porta mysql por padrão (se você não a alterou durante a instalação)) ao endereço 192.168.1.2

Ainda falta fazer o encaminhamento em uma máquina Linux (nela existem duas placas de rede 192.168.1.2 (interface enp3s1) e 192.168.0.2 (interface enp3s0) para que as placas de rede saibam o que transferi-las de 192.168.1.2 para 192.168.0.2 e depois para nossa máquina windows com mysql.
sudo iptables -A FORWARD -i enp3s1 -o enp3s0 -p tcp --syn --dport 3306 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -i enp3s1 -o enp3s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A FORWARD -i enp3s0 -o enp3s1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A PREROUTING -i enp3s1 -p tcp --dport 3306 -j DNAT --to-destination 192.168.0.3 sudo iptables -t nat -A POSTROUTING -o enp3s0 -p tcp --dport 3306 -d 192.168.0.3 -j SNAT --to-source 192.168.1.2 sudo service iptables-persistent save
I.e. A primeira linha significa que aceitamos a primeira conexão, a segunda e a terceira que você pode iniciar pacotes em ambos os lados, a quarta e a quinta significa substituir o endereço e a fonte de destino. E pronto, você pode se conectar de casa através do mysql. E, finalmente, meu código C ++ que faz isso:
Agora você pode deixar esse programa com segurança para qualquer pessoa e não precisará reescrevê-lo para funcionar localmente.