Jump to content
  • 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

Recommended Posts

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.

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.