【问题标题】:Connector/NET connecting to MSSQL error - access denied for user 'sa'@'localhost' (using password yes)连接器/NET 连接到 MSSQL 错误 - 用户 'sa'@'localhost' 的访问被拒绝(使用密码是)
【发布时间】:2023-03-10 15:28:01
【问题描述】:

我正在使用 MSSQL 数据库在 Web api、Visual Studio Code 中的 ASP.NET 中制作程序。我正在用 SignalR 制作一个聊天应用程序,我想在我的 ChatHub 文件中建立连接。当我正确编写连接时,我收到一条错误消息:access denied for user 'sa'@'localhost' (using password yes)

这是我的 ChatHub.cs 代码

 public async Task SendMessage(string user, string message)
        {
            MySql.Data.MySqlClient.MySqlConnection conn;
            string myConnectionString;

            myConnectionString = "server=localhost;uid=sa;" +
                "pwd=123456789;database=DBChatApp";

            try
            {
                conn = new MySql.Data.MySqlClient.MySqlConnection();
                conn.ConnectionString = myConnectionString;
                conn.Open();
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine($"user={user}, message={message}");
            await Clients.All.SendAsync("ReceiveMessage", user, message);
        }
    }

【问题讨论】:

  • 您有混合的后端。 SQL 服务器?还是 MySQL?
  • 我正在使用 Microsoft SQL Server Management Studio 18,并且我也安装了 MySQL Server 8.0 和 Connector/NET。我正在学习编程,数据库对我来说是新的。我不知道,哪个客户是干什么用的。
  • 如果您使用的是 MSSQL (Microsoft SQL Server),那么您为什么要安装 MySQL 相关工具?它们是完全不同的 DBMS。
  • 我有另一个用于用户登录和注册页面的程序,我将这个 Microsoft SQL Server Management Studio 18 用于数据库,我在 appsettings.json 中使用连接字符串及其在那里工作,只有当我想像我在问题中建立的连接时遇到问题。
  • 因为我尝试了很多我在互联网上找到的东西,我对这些数据库有点困惑

标签: c# mysql asp.net sql-server visual-studio-code


【解决方案1】:

您的用户名或密码错误,或者您的 MySQL 用户没有从该主机连接的权限。

根据specifying account names,MySQL 中的用户帐户类似于'user'@'host',由用户名和主机名组成。

尝试使用您在上面提供的详细信息创建用户帐户可能会解决您的问题:

CREATE USER 'sa'@'localhost' IDENTIFIED BY '123456789';
GRANT ALL ON DBChatApp.* TO 'sa'@'localhost';

【讨论】:

  • 谢谢 .. 如果我使用的是 MSSQL,那么我需要在哪里编写此命令?因为在 MySQL 上,我需要在 MySQL bin 文件夹中的 'cmd' 中写入 'mysql' 文件
  • 如果您使用的是 MSSQL,则此答案不适用,并且您的任何代码都不起作用,因为它是不同的数据库服务器产品。你应该问一个新问题。
【解决方案2】:

如果是 MS SQL Server 则:

public async Task SendMessage(string user, string message)
{
    string myConnectionString = "server=localhost;uid=sa;" +
                "pwd=123456789;database=DBChatApp";
    try
    {
         using(SqlConnection conn = new SqlConnection(myConnectionString))
         {
                conn.Open();
    Console.WriteLine($"user={user}, message={message}");
            await Clients.All.SendAsync("ReceiveMessage", user, message);
         }
    }
    catch (Exception ex)
    {
         Console.WriteLine(ex.Message);
    }
}

【讨论】:

  • 谢谢,这对我来说是个问题,我使用的是 MySqlConnection 而不是 SqlConnection,谢谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
相关资源
最近更新 更多