2013-02-26 55 views
6

Tôi có một ứng dụng C# mà sẽ truy cập vào một máy chủ MySQL trên máy tính khác. Tôi đang cố gắng làm điều đó thông qua IP. Đây là Chuỗi kết nối của tôi:Làm cách nào để kết nối với máy chủ MySQL từ xa bằng 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); 

Bây giờ, tôi sẽ kết nối nó thông qua kết nối Internet hoặc Wi-Fi trên cả hai máy tính được kết nối. Sau đó tôi sẽ truy cập cơ sở dữ liệu thông qua các chuỗi SQL được mã hóa trên C#. Bây giờ tôi cũng có thể kết nối chúng thông qua mạng LAN nhưng tôi không biết làm thế nào.

Tôi nhận được ngoại lệ này trong mã của tôi

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

Bất kỳ ý tưởng làm thế nào tôi có thể truy cập vào máy chủ thông qua mạng?

+1

Bạn chắc chắn mật khẩu của mình không sai? Nó kết nối, mặc dù bạn nhận được truy cập bị từ chối lỗi vì vậy có lẽ có điều gì đó sai trái với thông tin đăng nhập của bạn, như nó nói. Có thể root chỉ được phép đăng nhập từ localhost. Tạo người dùng có quyền truy cập từ xa. – AmazingDreams

+0

Làm cách nào để tạo máy chủ có quyền truy cập từ xa? Tôi có bàn làm việc được cài đặt –

+0

Tôi cũng có một người dùng ở đây có tên 'root' và không có mật khẩu –

Trả lời

6

Vấn đề ở phía máy chủ MySQL, người dùng root không có quyền kết nối thuận tiện. Để cung cấp cho permisions dùng root để kết nối remotelly chỉ cần gõ này trên một dòng lệnh mysql:

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

Chỉ cần thay đổi 'rootPass' cho mật khẩu gốc hiện tại của bạn, nếu rễ doesnt có mật khẩu MySQL sẽ không cho phép bạn kết nối, do đó bạn sẽ có để xác định một cho nó.

Lưu ý một mặt: Vì cách bảo mật tốt nhất bạn nên xác định người dùng khác với gốc để truy cập cơ sở dữ liệu mysql của bạn từ ứng dụng khách.

Hy vọng nó sẽ giúp,

+0

THANKS A LOT! Tôi nợ bạn rất nhiều! –

+0

im sử dụng xampp. làm thế nào tôi có thể truy cập vào dòng lệnh mysql nếu tôi đang sử dụng phpmyadmin? – Kokombads

0

Một Ngoài chủ đề này:

Trong một số trường hợp hai máy tính được kết nối với cùng một mạng, các chuỗi kết nối được xác định ở trên có thể vẫn không hoạt động mặc dù cấu hình của máy tính nguồn và cấp các đặc quyền cho người dùng từ máy khách.

Trong trường hợp này, hãy cân nhắc (trước khi di chuyển xa hơn và thực hiện hành động nghiêm trọng hơn trên máy tính nguồn chẳng hạn như sửa đổi tệp cấu hình Mysql vv) để "sử dụng tên máy tính làm tên máy chủ thay vì địa chỉ IP".

tức

  • đầu tiên, cấp đặc quyền cho người sử dụng như mô tả ở trên,
  • nhưng thay vì chuỗi kết nối đề xuất ở trên, hãy thử những chuỗi kết nối sau:

nên , chuỗi kết nối sẽ trông giống như:

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

Tên của máy tính nguồn có thể hoạt động trong nhiều trường hợp địa chỉ IP của máy tính nguồn trả về lỗi.

Chúc may mắn!

0

Thay đổi từ gốc sang tên người dùng khác và đặt mật khẩu hoạt động tốt để truy cập từ xa vì gốc chỉ có đặc quyền truy cập đầy đủ khi bạn ở trên máy chủ cục bộ. Trên mạng cục bộ sử dụng địa chỉ IP, hãy sử dụng tên máy tính.

Các vấn đề liên quan