2011-10-05 99 views
2

我想连接到我的服务器上的MySQL数据库。下面是我使用的连接我的小样本:无法连接到远程MySQL数据库

 

using System; 
using System.Data; 
using MySql.Data.MySqlClient; 

namespace MySqlTest 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
     string connectionString = 
      "Server=12.34.546.213;" + 
      "Database=Test;" + 
      "UID=root;" + 
      "Password=password;"; 
     IDbConnection dbcon; 
     dbcon = new MySqlConnection(connectionString); 
     dbcon.Open(); 
 

我收到以下错误,当我尝试执行此代码:

 

Unhandled Exception: MySql.Data.MySqlClient.MySqlException: Access denied for us 
er 'root'@'12.34.546.213' (using password: YES) 
    at MySql.Data.MySqlClient.MySqlStream.ReadPacket() 
    at MySql.Data.MySqlClient.NativeDriver.AuthenticateNew() 
    at MySql.Data.MySqlClient.NativeDriver.Authenticate() 
    at MySql.Data.MySqlClient.NativeDriver.Open() 
    at MySql.Data.MySqlClient.Driver.Open() 
    at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings 
) 
    at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection() 
    at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection() 
    at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() 
    at MySql.Data.MySqlClient.MySqlPool.GetConnection() 
    at MySql.Data.MySqlClient.MySqlConnection.Open() 
    at MySqlTest.MainClass.Main(String[] args) in c:\Users\dvargo\Documents\Proje 
cts\MySqlTest\MySqlTest\Main.cs:line 18 
Press any key to continue . . . 

任何想法,这可能是为什么?我如何给root权限以便我可以访问它?

+1

您是否允许使用MYSQL实例上的root帐户进行远程访问? –

+0

在my.cnf文件中,我更改了'#bind-address = 123.34.567.89'这是我的服务器的IP地址。除此之外,我还需要做些什么? – user489041

回答

3

检查mysql配置,默认情况下root用户只能从localhost连接。在DB

CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 

授予权限:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html

+2

默认情况下,只能从本地主机访问根帐户。出于安全原因,您应该使用'CREATE USER'和'GRANT'来创建一个新用户,并只给予它所需的权限。从C#应用程序远程访问root是一个很大的安全漏洞。 – Polynomial

+0

你知道什么需要在配置文件中设置,以允许远程连接? – user489041

7

来自任何主机创建用户访问(或只从主机从中你会被连接)

GRANT ALL PRIVILEGES ON `sometable` . * TO 'username'@'%' WITH GRANT OPTION ; 
0

难道你编辑配置文件以允许远程访问?

如果不是,那很可能是您的问题。我不知道关于在这里发布链接的规则,但在谷歌搜索远程mysql访问将提供一些很好的建议。