Pergunta

Eu estou acessando um banco de dados MySQL dentro de app um C ++ usando o MySQL ++ Connector C. Ele funciona muito bem se eu tiver o C ++ e o MySQL na mesma máquina. Então, algo como o seguinte código funciona bem:

sql::Connection             *_con;
sql::mysql::MySQL_Driver    *_driver;
_driver = sql::mysql::get_mysql_driver_instance();
_con = _driver->connect("tcp://127.0.0.1:3306", "user", "password");

No entanto, eu não consigo acessar o banco de dados se ele estiver localizado em outra máquina. Então, algo como isto:

sql::Connection             *_con;
sql::mysql::MySQL_Driver    *_driver;
_driver = sql::mysql::get_mysql_driver_instance();
_con = _driver->connect("tcp://somesite.com:3306", "user", "password");

É simplesmente não é possível ou estou fazendo algo errado?

Foi útil?

Solução

Será que você acidentalmente configurar seus usuários para que eles só podem acessar seu banco de dados a partir da máquina local?

Você fez

create user 'user'@'127.0.0.1' ...

ou

create user 'user'@'%' ....

Se você fez o primeiro, então você não será capaz de fazer logon a partir de uma máquina diferente.

Você também concede os privilégios corretamente?

Veja o MySQL docs para uma mais na explicação detalhada sobre como fazer isso corretamente

Outras dicas

Eu tenho feito isso por meio de uma VPN, por isso estou assumindo que é possível. Você está usando a porta correta?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top