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
中看到连接,从那里我得到 connectionString
并且连接正确。
Access denied for user 'root'@'localhost' (using password: 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 服务器项目添加的项目,我无法使用 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();
}
我正在学习如何使用 MVC 模板创建 ASP.NET Web 应用程序。
如标题所述,我正在使用 MySql,我可以在 server explorer > Data Connections
中看到连接,从那里我得到 connectionString
并且连接正确。
Access denied for user 'root'@'localhost' (using password: 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 服务器项目添加的项目,我无法使用 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();
}