【实操】nodejs服务器连接docker下mysql数据库+dataGrip

第一步:docker安装mysql
地址:https://hub.docker.com/_/mysql?tab=tags

第二步:启动docker下mysql数据库
在这里插入图片描述
mysql启动成功

$ sudo docker run --name demo_mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql --lower_case_table_names=1

–name:给新创建的容器命名,此处命名为demo_mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射主机3306端口到容器pwc-mysql的3306端口
-d:成功启动容器后输出容器的完整ID,如上图fa987b...
最后一个mysql指的是mysql镜像名字

docker容器中会显示mysql启动成功

进入mysql:docker exec -it demo_mysql mysql -uroot -p

第三步:利用上一步获取的容器的完整ID,进入mysql命令行下,创建一个库
在这里插入图片描述

打开mysql容器命令行输入:
$docker exec -it fa987b... /bin/sh

输入上一步配置mysql的root用户的登陆密码:123456,进入mysql命令行

新建库nodejs_demo:create database nodejs_demo;

查看库:show database

第四步:dataGrip连接mysql
新建一个MySQL
在这里插入图片描述
在这里插入图片描述

新建表:
在这里插入图片描述

第五步:开始nodejs服务搭建,先下载好nodejs,创建项目目录,进入项目文件,初始化package.json

$ mkdir nodejs_mysql_demo
$ cd  nodejs_mysql_demo
$ npm init -y

第六步:下载mysql

$ npm i mysql

第七步:新建src文件夹下创建db.js文件

const mysql = require('mysql')

//链接配置
var connection = mysql.createConnection({
  host: 'localhost', //ip
  user: 'root', //用户名
  password: 'xxxxx',//密码
  database: 'xxxxx' //数据库名
});

//建立链接
connection.connect();

//进行查询table_test中id=1的name数据
connection.query('SELECT * from table_test where id=1', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].id);
});

第八步:在package.json配置start启动node

//  package.json
  "scripts": {
    "start": "node ./src/db.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

// 运行:npm run start

好啦!最基本的nodejs连接docker下mysql容器就成功了!🎉

注意点:

在nodejs连接数据库启动时遇到报错:

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

原因:

目前,最新的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。

解决方法:

mysql执行:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值