繁体   English   中英

ASP.NET MVC MySQL 访问拒绝用户“root”@“localhost”(使用密码:NO)

[英]ASP.NET MVC MySQL Access denied for user 'root'@'localhost' (using password: NO)

我正在学习如何使用 MVC 模板来创建 ASP.NET Web 应用程序。 正如标题所述,我正在使用 MySql,我可以在server explorer > Data Connections看到server explorer > Data Connections ,从那里我得到了connectionString并且它已正确连接。

用户 'root'@'localhost' 访问被拒绝(使用密码:NO)

是我尝试将数据保存到(当前为空)数据库时遇到的错误。
这是我的connectionString

  <connectionStrings>
    <add name="dbname" connectionString="server=localhost;user id=root;persistsecurityinfo=True;database=dbname" />
  </connectionStrings>

我得到的错误在以下行

public static int SavedData<T>(string sql, T data)
{
    using (IDbConnection cnn = new MySqlConnection(GetConnectionString()))
    {
        return cnn.Execute(sql, data); //here is the error
    }
}

我不明白。 它说错误是针对用户的,并且没有使用密码? 正在使用密码,并且已正确设置。 有想法该怎么解决这个吗? 我已经阅读了许多其他线程,但那些主要在密码或使用 xampp、php 等其他工具的配置中存在错误,这不是我的情况。

编辑:

我遵循了使用 SQL 而不是 MySql 的本教程,并使用了一个名为 Dapper 的工具,我不知道它的用途是什么,在堆栈跟踪中我看到以下错误

Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) +85
   Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) +763
   Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) +117

我目前正在调查有关 MySQL 的 dapper。

编辑2:

我尝试修改连接字符串,所有值都设置正确。 但我仍然得到完全相同的错误,我不认为这是实际问题(我不得不修改 root 密码,因为我在密码中使用了双引号和 #。无论如何,这就是现在的样子,而连接已经过测试并且工作正常。

 <connectionStrings>
    <add name="dbname" connectionString="Persist Security Info=False;database=dbname;server=localhost;Connect Timeout=30;user id=root; pwd=_password" />
  </connectionStrings>

我相信代码很容易理解,也是我想做的,但我知道更有经验的程序员现在可能认为它不完整。
我试图做的是保存数据,但由于访问被拒绝类型的错误而无法保存,我认为这来自 Visual Studio 处理可以添加为 SQL Server 项目的项目的方式,我不能' t 使用 MySQL 项目(在我遵循的教程中,他从他添加的服务器资源管理器项目中复制了字符串,然后将其粘贴到 web.config 上的 connectionString 中,这显然对我不起作用),我还学习了我的关于GetConnectionString()方法的课程,在我的问题中没有解释,这就是为什么它被投票支持结束问题,但我知道它正在工作(虽然可能没有做它应该做的;我摆脱了它),不过,也许问题就在那里。
所以我最终做了以下工作,效果很好

public static void SavedData(int _SomeField)
{

    FooModel data = new FooModel
    {
        SomeField = _SomeField
    };

    MySqlConnection dbConnection;

    MySqlConnectionStringBuilder connectionBuilder = new MySqlConnectionStringBuilder();

    connectionBuilder.Server = "localhost";
    connectionBuilder.UserID = "root";
    connectionBuilder.Password = "password";
    connectionBuilder.Database = "foo";

    dbConnection = new MySqlConnection(connectionBuilder.ToString());


    String query = String.Format("insert into foo.foo (SomeField) values ('{0}')", @data.SomeField);

    dbConnection.Open();

    MySqlCommand cmd = new MySqlCommand(query, dbConnection);

    cmd.ExecuteNonQuery();

    dbConnection.Close();

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM