Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ricardo Nascimento

Wamp e C# em rede

Mensagens Recomendadas

Ricardo Nascimento

Boas.

Tenho um projecto que consiste em vários computadores acederem a uma base de dados que se encontra num servidor (tudo local).

O que estou a usar é o C# e o wamp.

Criei uma base de dados no wamp num computador, e a partir do C# consigo trabalhar com essa base de dados nesse mesmo computador.

Passo a base de dados para outro computador (que serve de servidor).

A partir de outros computadores em rede, consigo aceder por browser ao phpmyadmin que se encontra no servidor - e a partir dai posso fazer tudo á base de dados.

Mas não consigo conectar-me pelo C#.

O erro que dá é o seguinte:

"Uma tentativa de ligação falhou porque o componente ligado não respondeu

correctamente após um período de tempo, ou a ligação estabelecida falhou

porque o anfitrião ligado não respondeu"

Mas se me tento conectar com um IP errado, dá outro erro - isso significa que ele está a ligar-se ao servidor mas não está a receber feedback.

Pergunta: O que é que preciso fazer para a partir de um computador aceder a uma base de dados (no wamp) de outro computador em rede.

Obrigado desde já pelas respostas.

Cumprimentos, Ricardo.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ricardo Nascimento

Só mais algumas informações que me esqueci:

Código C#:

string CONFIG = "server=192.168.0.102;port=80;uid=root;database=test";
MySqlConnection Conexao = new MySqlConnection(CONFIG);
MySqlCommand Query = new MySqlCommand();
Query.Connection = Conexao;
Conexao.Open();

No wamp, fui ao ficheiro wamp\alias\phpmyadmin.conf e alterei :

"Deny from all

Allow from 127.0.0.1"

para:

"Allow from all"

e a partir do momento em que alterei, pude aceder ao phpmyadmin remotamente - agora resta aceder pelo C#  :wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Aí na string de configuração indicas que o porto do Mysql é o 80, mas na instalação que tenho aqui (default) é o porto 3306. Experimenta trocar, para ver se dá (podes ver o porto no menu Wamp > MySQL > my.ini).


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ricardo Nascimento

Já tentei, mas também não deu.

Pelo que percebi a porta que importa é a que se encontra no ficheiro httpd.conf - que configura o servidor apache.

Pois se alteramos a porta que vem ai (por defeito é a 80), quando tentarmos aceder ao localhost ou ao phpmyadmin pelo browser, temos também de alterar a porta (localhost:1234 por exemplo) .

Não entendi o que a porta do mysql faz.  :bored:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

      Boa tarde,

      Parece que estás confuso em relação a algumas coisas, o wamp, não é nenhuma base de dados. Repara WAMP é o acronimo de Windows + Apache + MySQL + PHP em que apenas o MySQL é um servidor de base de dados. A configuração do MySQL no package wamp vem com o acesso remoto desabilitado. A forma mais rapida de resolver essa questão é executar o comando abaixo na linha de comandos do windows, e no mysql exectar  o comando para garantir ao utilizador root acesso a partir de qualquer ip.

mysql --user=root --password=some_pass mysql

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY 'tua_password' WITH GRANT OPTION; 

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ricardo Nascimento

Boas.

Eu sei que o wamp não é uma base de dados.

Apenas não compreendo porque é que por browser, usando o phpmyadmin na porta 80, sem a usar a 3306 que é a do mysql conseguimos fazer tudo e por C# não.

Como é que eu num computador corro o wamp e nesse mesmo computador faço um programa em C# para fazer o que quiser (registos, apagar, editar) na base de dados, e este trabalha 5 estrelas usando a porta 80 que nada tem a ver com a 3306 do mysql? - é isto que não entendo.

Tentei fazer o que disseste, mas continua a não dar.

Não tenho password.

Escrevo só:  "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;" ?

% é a mesma coisa que * - all?

Obrigado pela ajuda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

    Boa noite,

    Basicamente % é um wildcard, é a mesma coisa que o -all .

    Se consegues aceder locamente em C# é porque o teu mysql está a bloquear os acessos de outros ip's que não 127.0.0.1 (localhost). Basta alterares as configurações do mysql para aceitar connecções de outros ip's. Edita o my.ini e retira o

bind-address=127.0.0.1

deve ser o suficiente.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ricardo Nascimento

Boas.

É pena não ter nada bind-address=127.0.0.1 para ficar resolvido.  :thumbsup:

Apagando as linhas que estão comentadas, o meu my.ini tem isto:

[client]
port		= 3306
socket		= /tmp/mysql.sock

[wampmysqld]
port		= 80
socket		= /tmp/mysql.sock
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir=c:/wamp/bin/mysql/mysql5.5.8
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.5.8/data
skip-federated

log-bin=mysql-bin

binlog_format=mixed

server-id	= 1
[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld]
port=3306

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

      Boa noite,

      Bem visto que não está aí o problema, resta verificar melhor o que está a acontecer, tenta fazer telnet à porta 3306 para confirmares que o MySQL está a aceitar ligações nessa porta. Caso esteja tens de "retirar" as restrições do user root que apenas o permitem ligar-se localmente, ou criar um user novo sem restrição de endereço de ip de origem nas ligações.

    Caso ele aceite ligações na porta 3306, basta abrires o mysql e executares o seguinte:

SET PASSWORD FOR root@localhost=PASSWORD('nova_pass');
SET PASSWORD FOR root@127.0.0.1=PASSWORD('pass');
FLUSH PRIVILEGES;

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ricardo Nascimento

Eu pensava que fosse muito comum este tipo de ligações.

Mas caso não consiga fazer assim, faço com o winsock. Assim tenho a certeza que dá.

Ainda vou tentar com telnet.

Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

    Boa noite,

    Este tipo de ligações é comum, a questão é que ao instalares o MySQL com o WAMP ele vem com uma serie de configurações feitas para funcionar no conjunto WAMP que não são propriamente as aconselháveis para desenvolvimento em desktop. Mesmo com sockets a ser um problema de restrições no MySQL, a ligação continuará a falhar.

    Pessoalmente prefiro instalar o MySQL separado de XAMP ou WAMP, quando é para trabalhar com desenvolvimento para desktop. Assim as configurações são todas feitas a meu gosto e não tenho serviços desnecessários a arrancar junto.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.