构建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数据库的内置库)中提取到内存里。经常用在改密码和授权超用户。