最近想要嘗試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的不一樣,連接會報錯。
解決方法如下:
- 通過命令行進入解壓的mysql根目錄下。
- 登陸數據庫
mysql -uroot -p
- 輸入root的密碼
Enter password: ******
- 更改加密方式(原樣拷貝到命令窗中)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
- 更改密碼:該例子中 123456為新密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
- 刷新:
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