2013-02-26 28 views
6

Mam aplikację C#, która miałaby dostęp do serwera MySQL na innym komputerze. Próbuję to zrobić przez IP. Oto moja String Connection:Jak połączyć się ze zdalnym serwerem MySQL przy użyciu C#?

server = "192.168.10.221"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

Teraz chodzi o to, by połączyć go za pośrednictwem Internetu lub połączenia Wi-Fi, w którym oba komputery są podłączone. Chciałbym wtedy uzyskać dostęp do bazy danych za pomocą ciągów SQL zakodowanych w języku C#. Teraz mogłem również połączyć je przez sieć LAN, ale nie wiem jak.

otrzymuję ten wyjątek w kodzie

{"Access denied for user 'root'@'Crave-PC.lan' (using password: NO)"} System.Exception {MySql.Data.MySqlClient.MySqlException} 

pomysłów w jaki sposób można uzyskać dostęp do serwera za pośrednictwem sieci?

+1

Jesteś pewien, że twoje hasło nie jest błędne? Łączy się, mimo że otrzymujesz błąd odmowy dostępu, więc prawdopodobnie jest coś nie tak z twoimi danymi uwierzytelniającymi, jak to się mówi. Może root może logować się tylko z localhost. Utwórz użytkownika, który ma zdalny dostęp. – AmazingDreams

+0

Jak utworzyć host, który ma zdalny dostęp? Mam zainstalowany workbench –

+0

Mam również użytkownika o nazwie "root" i nie ma hasła –

Odpowiedz

6

Problem występuje po stronie serwera MySQL, użytkownik root nie ma uprawnień do zdalnego połączenia. Aby dać permisions użytkownik root podłączyć zdalne sterowanie zasilaczem wystarczy wpisać to w wierszu poleceń mysql:

GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY 'rootPass'; 

wystarczy zmienić „rootPass” dla bieżącego hasła, jeśli korzeń robi się hasło MySQL przyzwyczajenie pozwalają połączyć więc trzeba będzie zdefiniować dla niego.

Jedna uwaga: Jako najlepszą metodę bezpieczeństwa powinieneś zdefiniować innego użytkownika niż root, aby uzyskać dostęp do baz danych mysql z aplikacji klienckich.

nadzieję, że to pomaga,

+0

DZIĘKUJEMY ZA DUŻO! Jestem ci tak bardzo winien! –

+0

im przy użyciu xampp. jak mogę uzyskać dostęp do tego wiersza poleceń mysql, jeśli używam phpmyadmin? – Kokombads

0

Jeden dodatek do tego wątku:

W niektórych przypadkach, gdy dwa komputery są podłączone do tej samej sieci, ciąg połączenia określone powyżej nie może nadal działać mimo konfiguracji komputer źródłowy i udzielanie uprawnień użytkownikowi z komputera klienckiego.

W takich przypadkach należy rozważyć (przed przejściem dalej i podjęciem poważniejszych działań na komputerze źródłowym, takich jak modyfikacja pliku konfiguracyjnego Mysql itp.), Aby "użyć nazwy komputera jako nazwy serwera zamiast adresu IP".

tj

  • pierwsze, przyznanie przywilejów dla użytkownika, jak opisano powyżej,
  • ale zamiast ciąg połączenia proponowanego powyżej, spróbuj następujący ciąg połączenia:

tak ciąg połączenia powinien wyglądać następująco:

server = "pc-name-whateveritis"; 
database = "restaurantdb"; 
uid = "root"; 
password = ""; 
string connectionString; 
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
mycon = new MySqlConnection(connectionString); 

Nazwa komputera źródłowego może działać w wielu przypadkach, gdy adres IP komputera źródłowego zwraca błąd.

Powodzenia!

0

Zmiana z głównego na inną nazwę użytkownika i ustawienie hasła działa dobrze dla dostępu zdalnego, ponieważ root ma pełne prawa dostępu tylko, gdy jesteś na localhost. W sieci lokalnej przy użyciu adresu IP występuje błąd, więc użyj nazwy komputera.

Powiązane problemy