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語句刪除,保存退出。

然后再次運行上面的代碼,成功!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM