我正在尝试连接到服务器上的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权限以便我可以访问它?
答案 0 :(得分:7)
创建用户以从任何主机(或仅从您将要连接的主机)进行访问:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
授予对db的权限:
GRANT ALL PRIVILEGES ON `sometable` . * TO 'username'@'%' WITH GRANT OPTION ;
答案 1 :(得分:3)
检查mysql配置,默认情况下,允许root用户仅从localhost连接。
http://dev.mysql.com/doc/refman/5.1/en/connection-access.html
答案 2 :(得分:0)
您是否编辑了配置文件以允许远程访问?
如果没有,那可能是你的问题。我不知道在这里发布链接的规则,但搜索谷歌的远程mysql访问将提供一些很好的建议。