Estou desenvolvendo um pequeno jogo como projeto da faculdade utilizando XNA da plataforma C#.
Preciso de acesso remoto ao meu banco de dados Mysql. Segue codigo de exemplo de como estou acessando o banco para leitura e gravação, somente para testes:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
getData();
updateData();
getData();
}
static void getData()
{
String conString = "server=localhost;user id=root;password=root;database=pongevodb";
//String conString = "server=192.168.0.107;user id=root;password=root;database=pongevodb";
//String conString = "server=Jhonatas-PC;user id=root;password=root;database=pongevodb";
MySqlConnection con = new MySqlConnection(conString);
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT X, Y FROM BALL";
//try
//{
con.Open();
//}
//catch (Exception e)
//{
// Console.WriteLine(e.Message);
//}
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["x"].ToString());
Console.WriteLine(reader["y"].ToString());
}
con.Close();
Console.ReadLine();
}
static void updateData()
{
//String conString = "server=Jhonatas-PC;user id=root;password=root;database=pongevodb";
String conString = "server=Jhonatas-PC;user id=root;password=root;database=pongevodb";
MySqlConnection con = new MySqlConnection(conString);
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "UPDATE BALL SET X = 50, Y = 10900";
//try
//{
con.Open();
//}
//catch (Exception e)
//{
// Console.WriteLine(e.Message);
//}
cmd.ExecuteNonQuery();
con.Close();
}
}
}
Quando tento rodar sem definir o server como localhost, ao tentar abrir a conexão, ocorre o seguinte erro (Quando tento pelo ip da maquina, ou pelo nome)
Unable to connect to any of the specified MySQL hosts.
Creio que seja simplesmente problema de privilégio no próprio mysql. Rodei a seguinte linha no prompt:
grant all privileges on . to root@"%.%.%.%" identified by “root”;
Mas mesmo assim nao consigo acessar o banco pelo ip, nem do rodando o codigo do proprio host, e nem de outra maquina. Só funciona com localhost.
O que estou fazendo de errado?