• Access denied for user 'root'@'localhost' (using password:YES)


    在用C#连接mysql数据库时,出现了以下错误:

    未经处理的异常
    :  MySql.Data.MySqlClient.MySqlException: Authentication to host '127.0.0.1' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException: Access denied for user 'root'@'localhost' (using password: YES)
    代码如下:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using MySql.Data.MySqlClient;
    using System.Data.SqlClient;
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string constructorString = "server=localhost;User Id=root;password=root;Database=mysql";
                MySqlConnection myConnnect = new MySqlConnection(constructorString);
                myConnnect.Open();
                MySqlCommand myCmd = new MySqlCommand("insert into user1(name,year) values('jjj',22)", myConnnect);
                Console.WriteLine(myCmd.CommandText);
                if (myCmd.ExecuteNonQuery() > 0)
                {
                    Console.WriteLine("数据插入成功!");
                }         
                myCmd.CommandText = "insert into user1(name,year) values('jjj4',22)";
                Console.WriteLine(myCmd.CommandText);
                if (myCmd.ExecuteNonQuery() > 0)
                {
                    Console.WriteLine("数据插入成功!");
                }
                myCmd.CommandText = "delete from user1";
                Console.WriteLine(myCmd.CommandText);
                if (myCmd.ExecuteNonQuery() > 0)
                {
                    Console.WriteLine("user1表类型数据全部删除成功!");
                }
                myCmd.Dispose();
                myConnnect.Close();
            }
        }
    }

     1.首先先更改my.ini文件

    然后在对应的安装目录中找到my.ini文件

    在打开my.ini文件,添加skip-grant-tables保存退出时,可能会提示权限不足,此时需要找到记事本--》右键以管理员身份运行--》文件--》打开

    然后打开对应目录的my.ini文件,添加skip-grant-tables保存退出

    2.找到命令提示符,右键以管理员身份运行,输入下面命令:

    启动:输入 net stop mysql

    停止:输入 net start mysql

    重启MySQL服务器

    但是命令中的mysql对应的是自己安装的mysql版本,例如我的就是MySQL57

    因此输入命令也不同

    3. cd 进入对应mysql的bin目录,输入mysql -u root -p,要求输入密码时按下回车,就可以免密码登陆

    4.进入mysq数据库,输入use mysql

    5、给root用户设置新密码入

    mysql> update user set password=password("新密码") where user="root";

    但由于我的MySQL版本是MySQL57,因此命令有所不同

    所以更改语句替换为update mysql.user set authentication_string=password('新密码') where user='root' ;即可(两个语句均要注意有分号)

    显示下图即可

    6.刷新数据库,输入mysql> flush privileges;(注意分号)

    7.退出mysql,输入mysql> quit

    然后将my.ini文件中添加的skip-grant-tables语句删除,保存退出。

    然后再次运行上面的代码,成功!

  • 相关阅读:
    背水一战 Windows 10 (26)
    背水一战 Windows 10 (25)
    背水一战 Windows 10 (24)
    背水一战 Windows 10 (23)
    背水一战 Windows 10 (22)
    背水一战 Windows 10 (21)
    背水一战 Windows 10 (20)
    背水一战 Windows 10 (19)
    背水一战 Windows 10 (18)
    背水一战 Windows 10 (17)
  • 原文地址:https://www.cnblogs.com/z12568/p/9833602.html
Copyright © 2020-2023  润新知