我已经使用.NET6环境创建了一个Web MVC视图项目,但在try 连接到数据库时遇到错误. 我介绍了包MySql.Data(8.1.0).

MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'root'@'localhost' (using password: YES) at MySql.Data.MySqlClient.MySqlStream.ReadPacketAsync(Boolean execAsync)

下面是appsettings.json文件中的MySQL配置参数.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionString": "server=localhost;port=3306;database=test;user=root;password=root;"
}

以下是Program.cs代码

MySqlDBHelper.DB_CONNECTION_STRING = app.Configuration["ConnectionString"];

我确信我的数据库帐户密码设置不正确

我try 过调试 以确保Conn正确获取DB_CONNECTION_STRING数据. 下面是控制器的Add方法

        [HttpGet("Add")]
        public object Add(string FileName, string FilePath,string ImageUrl)
        {

            var sql = "INSERT INTO image_info (FileName, FilePath, ImageUrl) VALUES (@FileName, @FilePath, @ImageUrl)";


            using var conn = MySqlDBHelper.GetSqlConnection();

            conn.Open();
            var result = conn.Execute(sql, new { FileName, FilePath, ImageUrl });
            return Ok();
        }

推荐答案

Reason

与旧版本相比,Mysql8.0+更新了密码加密方法.

打开命令,输入MySQL&>,然后输入

mysql> select user,host,plugin from mysql.user;

您可以看到,插件(Plug-in)格式已经更新为caching_sha2_password,因此我们只需要更改为旧版本MySQL_Native_Password:

ALTER USER‘ROOT’@‘这里是主机下的名称,如LOCALHOST’,通过‘YOUR_PASSWORD’标识为MYSQL_Native_PASSWORD;

修改后记得刷新命令FLUSH PRIVILEGES;(刷新权限)

Mysql相关问答推荐

SQL-从一个字段中 Select 值,但另一个字段中不包含零值

MySQL:一个查询中的SELECT语句,用于从一个表中检索所有数据,并仅从另一个表中检索一个数据

发生的原因及解决方法

将 Cloud Function (nodejs) 连接到 CloudSQL mySQL 数据库

在 MySQL 中,如何对 LIKE 查询进行批量更新,删除字符?

使用 autocommit = 0 和 InnoDB 表的 LOCK TABLES 检测死锁

使用适配器设计模式和外观设计模式实现

在分组结果 MySQL 5.7 版中获取最多的重复值

JOOQ:如何将 POJO 列序列化为 JSON

了解 SQL 中的元组语法

在 MySQL 中转换 JSON 数组值

MySQL如何为数据库中的所有表生成DDL

我应该使用什么列数据类型来存储大量文本或 html

在 MYSQL 中按枚举字段排序

MySQL where NOT IN 名称数组?

如何使用 XML_LOAD() 将 XML 文件导入 MySQL 数据库表;功能

Sequelize:销毁/删除表中的所有记录

我可以在 PHP 中使用 PDO 创建数据库吗?

设计用户角色和权限系统的最佳实践?

如果另一列为空,则 Select 一列