【问题标题】:Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Unknown database 'xxx'使用方法“mysql_native_password”对用户“root”的主机“localhost”进行身份验证失败,并显示消息:未知数据库“xxx”
【发布时间】:2016-10-27 22:12:21
【问题描述】:

我在我的项目中使用代码优先方法。但是,当我尝试使用“update-database”命令运行 db-migrations 时,出现空引用异常,并且在运行应用程序时出现以下配置错误: 使用方法“mysql_native_password”对用户“root”的主机“localhost”进行身份验证失败,并显示消息:未知数据库“xxx”。

这是连接字符串:

 <add name="DefaultConnectionString" connectionString="server=localhost;port=3306;Database=cps;uid=root;pwd=root;" providerName="MySql.Data.MySqlClient" />

P.S:它在其他系统上运行良好。

【问题讨论】:

    标签: mysql asp.net asp.net-web-api2 mysql-workbench


    【解决方案1】:

    您的连接字符串需要一个名为 cps 的 MySQL 数据库。您似乎尚未在本地 MySQL 服务器上创建该数据库。

    专业提示:始终仔细阅读错误消息文本,问自己“这意味着什么?”

    【讨论】:

      【解决方案2】:

      我为以下错误得到的解决方案。

      使用方法“mysql_native_password”对用户“root”的主机“localhost”进行身份验证失败,并显示消息:用户“root”@“localhost”的访问被拒绝(使用密码:YES)

      &lt;add name="constring" connectionString="Server=localhost;Uid=root;Database=databasename;Port=3306;" providerName="MySql.Data.MySqlClient"/&gt;

      => 只需删除密码

      => 如果您有 2 个具有不同端口号的本地服务器,只需添加它,否则默认情况下它将采用 3306

      【讨论】:

        【解决方案3】:

        使用方法“mysql_native_password”对用户“root”的主机“localhost”进行身份验证失败,并显示消息:用户“root”@“localhost”的访问被拒绝(使用密码:YES)

        来自

        public string strconn = "SERVER = localhost ;DATABASE=restaurant;UID = root;pwd=12345678;convert zero datetime=True";

        成为

        public string strconn = "SERVER =127.0.0.1 ;DATABASE=restaurant;UID = root;pwd=12345678;转换零日期时间=True"; 将连接字符串中的 localhost 修复为 127.0.0.1

        【讨论】:

          【解决方案4】:

          感谢所有答案,但在我的情况下,@GirishBabuC 说它的端口,需要在连接字符串中附加端口,以防您使用其他默认端口。

          <add name="constring" connectionString="Server=localhost;Uid=root;Database=databasename;Port=3307;" providerName="MySql.Data.MySqlClient"/>
          

          在我的例子中是 3307。

          在安装时请求端口。

          【讨论】:

            【解决方案5】:

            此问题可能会出现,具体取决于所针对的 MySQL 版本。欢迎您尝试此解决方案,看看它是否适合您。不要使用Uid=*;Pwd=*; 格式,而是使用user=*;password=*; 格式。

            原始连接字符串:

            Server=localhost;Port=3306;Database=databasename;Uid=sqltracking;Pwd=sqltracking;
            

            一个有效的

            server=localhost;port=3306;database=databasename;user=sqltracking;password=sqltracking;
            

            第一种方法适用于 MySql 8,但不适用于 MySql 5。

            我没有深入研究这些连接字符串配置背后的文档,但是,我注意到 MySQL 5.7 和 8.0 在某些情况下存在差异。虽然诚然没有花很多时间来弄清楚为什么有时会发生这种情况。

            另外,请记住在进行任何权限更改后在您的 MySQL 实例上执行FLUSH PRIVILEGES。这也可能会产生影响。

            【讨论】:

              猜你喜欢
              • 2021-08-23
              • 2017-01-19
              • 2017-10-14
              • 2022-11-24
              • 2019-10-09
              • 1970-01-01
              • 1970-01-01
              • 2013-07-12
              相关资源
              最近更新 更多