2013-02-26 2 views
6

다른 컴퓨터의 MySQL 서버에 액세스하는 C# 응용 프로그램이 있습니다. 나는 IP를 통해 그것을하려고 노력하고있다.C#을 사용하여 원격 MySQL 서버에 연결하는 방법은 무엇입니까?

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); 

지금은 생각이, 내가 컴퓨터 모두에 연결되는 인터넷 또는 Wi-Fi 연결을 통해 연결 것 : 여기 내 연결 문자열입니다. 그런 다음 C#으로 코딩 된 SQL 문자열을 통해 데이터베이스에 액세스합니다. 이제는 LAN 네트워킹을 통해 연결할 수도 있지만 어떻게 작동하는지 모릅니다.

나는 내 코드

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

내가 네트워크를 통해 서버에 액세스 할 수있는 방법 어떤 아이디어에이 예외는 무엇입니까?

+1

비밀번호가 틀리지 않으십니까? 액세스가 거부되었으므로 연결되지만 자격 증명에 문제가있을 수 있습니다. 아마도 root는 localhost에서만 로그인 할 수 있습니다. 원격으로 액세스 할 수있는 사용자를 만듭니다. – AmazingDreams

+0

원격으로 액세스 할 수있는 호스트는 어떻게 만듭니 까? 나는 워크 벤치를 설치했습니다 –

+0

나는 'root'라는 사용자를 여기에두고 있으며 암호가 없습니다. –

답변

6

문제는 MySQL 서버 측에서 root 사용자는 원격으로 연결할 수있는 권한이 없습니다. 루트 암호가 나던 경우 MySQL은 늘 당신이해야합니다 당신이 그렇게 연결할 수 있도록, 현재의 루트 암호를

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

그냥 변화 'rootPass' 그냥 MySQL의 명령 줄에 입력 remotelly 연결하는 루트 사용자 권한 '을 부여하려면 그것을 위해 하나를 정의하십시오.

한 쪽 메모 : 보안을 위해 클라이언트 응용 프로그램에서 mysql 데이터베이스에 액세스하려면 root가 아닌 다른 사용자를 정의해야합니다. 그것이 도움이

희망,이 스레드

+0

감사합니다. 너를 많이 빚 졌어! –

+0

메신저 사용. phpmyadmin을 사용하고 있다면 mysql 커맨드 라인에 어떻게 접근 할 수 있습니까? – Kokombads

0

하나 또한 두 컴퓨터가 동일한 네트워크에 연결되어있는 경우에

은 위에서 정의 된 연결 문자열은 여전히의 구성에도 불구하고 작동하지 않을 수 있습니다 원본 컴퓨터 및 클라이언트 컴퓨터에서 사용자에 대한 권한 부여.

그러한 경우에는 "(IP 주소 대신 서버 이름으로 컴퓨터 이름을 사용하십시오.") Mysql 구성 파일 등의 수정과 같이 원본 컴퓨터에서 더 많은 조치를 취한 후 더 이동하기 전에 고려하십시오.

  • 첫째 전술 한 바와 같이,
  • 대신 위의 제안 된 연결 문자열의 다음 연결 문자열하려고 사용자에게 권한을 부여 그래서

을 연결 문자열은 다음과 같습니다.

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); 

원본 컴퓨터의 IP 주소가 오류를 반환하는 경우 원본 컴퓨터의 이름이 작동하는 경우가 있습니다.

행운을 빈다.

0

root에서 다른 사용자 이름으로 변경하고 암호를 설정하면 로컬 호스트에있을 때 root만이 모든 액세스 권한을 갖기 때문에 암호는 원격 액세스에 적합합니다. IP 주소를 사용하는 근거리 통신망에서 오류가 발생하므로 컴퓨터 이름을 사용하십시오.

관련 문제