Docker安装数据库
确保 docker --version 和 docker run hello-world 输出正确
docker安装成功后,启用MySQL容器
docker run hello-world // Hello from Docker!
docker --version
docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=12345678 -p 3306:3306 -d mysql:5.7.27
这里有坑:
- 如果你使用了MySQL8.0,那么在node.js连接数据库时使用的mysql客户端将不支持这个版本服务器所请求的身份验证协议。
- 如果你在本地已经装了MySQL其他版本,就要设置与原来MySQL不同的密码,并右键我的电脑->管理->终止原来的MySQL服务,否则会导致docker运行的和本地的MySQL冲突而无法用nodejs连接docker运行的。
Docker命令
docker ps // 查看容器运行状态
docker kill mysql1 // 关掉容器
docker container run mysql1 // 开启刚关掉的容器
docker rm mysql1 // 删掉容器,必要时可加-f选项
docker run // 启动新容器
Mysql命令
docker exec -it mysql1 bash // 进入容器,运行mysql
mysql -u root -p // 12345678
show databases; // 查看数据库列表
use xxx; // 使用xxx数据库
use sys; // 使用默认的sys数据库
show tables; // 查看所有表
select* from CHARACTER_SETS; // 查看表内容
命令行
ctrl + d 用于退出mysql、bash
注意:
用 Docker运行的容器,默认不会持久化。 也就是说如果容器被删掉了,那么数据也没了 如果需要持久化,自行搜索「docker mysql数据目录」
MySQL数据类型
- 数字:bit、tinyint、bool/boolean、smallint、mediumint、int、bigint、decimal、float、double、serial【等价于BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE】
- 字符串:char(100)、varchar(100)、binary(1024)、varbinary(1024)、blob、text、enum('v1', 'v2')、set('v1', 'v2')
- 时间和日期:data、time、datetime、timestamp、year【如何把日期输出为ISO 8601格式】
- JSON(5.7.8+)
- 其他
nodejs连接数据库
搜mysqljs,下载mysql客户端 yarn add mysql,并用node运行下列代码
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '12345678',
});
connection.connect();
connection.query('CREATE DATABASE IF NOT EXISTS lu DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;',
function (error, results, fields) {
if (error) throw error;
console.log('创建健数据库');
});
connection.query('use lu;')
connection.query(`CREATE TABLE IF NOT EXISTS user(
name text,
age int
)`, function (error, results, fields) {
if (error) throw error;
console.log('创建表');
});
connection.end();
ORM(关系映射库):Sequelize.js
像操作对象一样操作数据库:搜索sequelize
yarn add sequelize
yarn add --dev @types/sequelize // sequelize代码提示
yarn add mysql2