nodejs連接mysql數據庫,報錯Client does not support authentication protocol requested by server的解決方法


最近想要嘗試nodejs連接本地數據庫,往全棧方向做一個小小的嘗試,於是下載了一個 MySQL8.0,發現Navicat連接不上,結果就下載了mysql自身的Workbench,繼續使用。 
然而,難受的是,在我連接下載安裝好nodejs、express等一系列東西之后。

// 數據庫連接配置
module.exports = {
    mysql: {
        host: '127.0.0.1',
        user: 'root',
        password: '123456',
        database: '*******',//數據庫名稱
        port: '3306'
    }
}

然而運行之后報了這個錯誤 

發現好像還是和mysql版本有關系,然后就開始搜索解決。 
查看大神的結論是: 
MySQL8.0版本的加密方式和MySQL5.0的不一樣,連接會報錯。 
解決方法如下:

    1. 通過命令行進入解壓的mysql根目錄下。
    2. 登陸數據庫 
      mysql -uroot -p
    3. 輸入root的密碼 
      Enter password: ******
    4. 更改加密方式(原樣拷貝到命令窗中) 
      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
    5. 更改密碼:該例子中 123456為新密碼 
      mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    6. 刷新: 
      mysql> FLUSH PRIVILEGES;

 

/如果報錯ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@’%’: 
則是遠程訪問權限不正確,先選擇數據庫,查看一下再更改:

mysql> use mysql;
Database changed

mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 5 rows in set (0.00 sec)

文章參考:https://blog.csdn.net/XDMFC/article/details/80263215

轉載: https://blog.csdn.net/airdark_long/article/details/82588064


免責聲明!

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



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