构建vue-ssr项目——nodejs连接数据库

工具准备

安装mysql

下载链接:https://dev.mysql.com/downloads/mysql/

网上有很多安装教程,有需要自行搜索。

PS:我下载的版本是8.0.19

安装Navicat

一个可视化数据库管理工具。

找个软件商城下载安装,或者网上搜下载链接。安装步骤很普通,没啥好说的。

启动mysql

启动mysql服务,打开连接。

创建一个数据库

命名为test

安装驱动

npm i mysql

连接数据库

在server.js中添加如下代码,然后本地运行npm run dev

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    port: 3306,  // 默认3306,可省略
    user: 'root',
    password: '123456',
    database: 'test'
});
 
connection.connect();
 
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

关于连接mysql时遇到的一些错误

报错1

Error: connect ECONNREFUSED 127.0.0.1:3306

原因:数据库服务没有打开

解决:可以先确认一下mysql安装的是否有问题,若没问题,则打开计算机管理,启动服务。

以win10为例:右击左下角win图标,点击计算机管理,在服务里找到MYSQL80(这个名字是安装的时候设置的,我安装的时候默认是MYSQL80)

报错2

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

错误:不支持的身份验证模式:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端

原因:mysql8.0以上加密方式,Node还不支持

解决:修改加密规则

报错3

解决报错2的时候,在mysql shell中输入命令mysql -u root -p出现了如下报错

SyntaxError: Unexpected identifier

尝试使用:

\connect root@localhost 

参考链接:https://forums.mysql.com/read.php?10,661192,662416#msg-662416

而后运行

alter user 'root'@'localhost' identified with mysql_native_password by '123456';  // 123456是自己设置的连接数据库的密码
flush privileges;

PS:flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。经常用在改密码和授权超用户。