docker for windows--快速搭建各种关系型数据库RMDB的测试环境
2023-09-11 14:16:24 时间
在实际工作中,需要搭建关系型数据库(RMDB)进行功能的测试与验证,本文基于docker镜像,提供针对关系型数据库MySQL、PostgreSQL、SQLServer测试数据库的快速搭建。
包含了拉取关系型数据库(RMDB)并启动容器,创建数据库、用户及相应的授权操作,最后提供建表及示例数据,用于进行功能测试验证。
MySQL
单机版
拉取并启动容器
docker pull mysql:5.7.30
# 正式使用
docker run -d --name mysql5.7 -p 13306:3306 -v D:/docker/mysql/single/log:/var/log/mysql -v D:/docker/mysql/single/data:/var/lib/mysql -v D:/docker/mysql/single/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7.30
# 测试期间使用,可以快速的定位容器启动或使用过程中的问题
docker run --rm --name mysql5.7 -p 13306:3306 -v D:/docker/mysql/single/log:/var/log/mysql -v D:/docker/mysql/single/data:/var/lib/mysql -v D:/docker/mysql/single/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7.30
创建数据库及用户
使用 mysql -hlocalhost -P13306 -uroot -proot
进入mysql客户端
CREATE USER 'dbuser'@'%' IDENTIFIED BY 'abc@1234';
grant all privileges on *.* to 'dbuser'@'%' identified by 'abc@1234';
FLUSH PRIVILEGES;
之后,就可以使用 mysql -hlocalhost -P13306 -udbuser -pabc@1234
进行进入mysql客户端
产生示例数据
CREATE DATABASE test;
CREATE TABLE customers (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
addr VARCHAR(30) NOT NULL,
email VARCHAR(50),
registration_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO customers (name, addr, email)
VALUES ('John', '广州市', 'john@example.com'),
('Jane', '广州市', 'jane@example.com'),
('Bob', '广州市', 'bob@example.com'),
('Alice', '广州市', 'alice@example.com'),
('张三', '广州市', 'david@example.com'),
('李四', '广州市', 'emily@example.com'),
('Frank', '广州市', 'frank@example.com'),
('Grace', '广州市', 'grace@example.com'),
('赵六', '广州市', 'henry@example.com'),
('Isabella', '广州市', 'isabella@example.com'),
('Jacob', '广州市', 'jacob@example.com'),
('Karen', '广州市', 'karen@example.com'),
('Linda', '广州市', 'linda@example.com');
主从集群
参见《docker for windows–MySQL 5.7.x 主从及主从复制配置及问题解决》
postgresql
详见参见 docker安装postgresql
docker pull postgres:12.14-alpine3.17
docker run --rm --name pg12 -v D:/docker/rmdb/pg/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=Test123 -p 5432:5432 postgres:12.14-alpine3.17
创建数据库及用户
进入容器
docker exec -it pg12 bash
su - postgres
psql -U postgres
#或执行如下命令,但需要输入上面定义的密码
psql -h localhost -d testdb -U postgres -W
然后执行如下命令:
create database testdb TEMPLATE template0 ENCODING 'utf8' ;
create user pguser with password '123456';
--允许用户用于登录
ALTER USER pguser WITH login;
grant all privileges on database testdb to pguser;
然后就可以使用如下命令执行SQL语句
psql -h localhost -d testdb -U pguser -W
产生示例数据
CREATE TABLE customers (
id serial PRIMARY KEY,
name VARCHAR(30) NOT NULL,
addr VARCHAR(30) NOT NULL,
email VARCHAR(50),
registration_date timestamp NOT NULL DEFAULT NOW()
);
INSERT INTO customers (name, addr, email)
VALUES ('John', '广州市', 'john@example.com'),
('Jane', '广州市', 'jane@example.com'),
('Bob', '广州市', 'bob@example.com'),
('Alice', '广州市', 'alice@example.com'),
('张三', '广州市', 'david@example.com'),
('李四', '广州市', 'emily@example.com'),
('Frank', '广州市', 'frank@example.com'),
('Grace', '广州市', 'grace@example.com'),
('赵六', '广州市', 'henry@example.com'),
('Isabella', '广州市', 'isabella@example.com'),
('Jacob', '广州市', 'jacob@example.com'),
('Karen', '广州市', 'karen@example.com'),
('Linda', '广州市', 'linda@example.com');
sqlserver
拉取并启动容器
部署参考:
部署并连接到 SQL Server Linux 容器
通过Docker部署并配置SQLServer
#拉取镜像
docker pull mcr.microsoft.com/mssql/server:2019-latest
# 运行容器
#运行MS SQLServer, 容易出现的错误是密码不满足要求,SQLServer的要求是至少8位且需要由大写字母、小写字母、数字、符号中的至少3种组成
docker run --rm --name SQLServer -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Abc12345" -p 1433:1433 --hostname sqlserver1 mcr.microsoft.com/mssql/server:2019-latest
# 进入容器
docker exec -it SQLServer bash
#连接到sqlserver
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Abc12345"
SQL操作
包含创建数据库、创建用户并授权
注意:和PostgreSQL有一点点相似,SQLServer也是将用户分为了登录用户和数据库用户的,所以需要分别创建
CREATE DATABASE testdb;
SELECT Name from sys.Databases;
go
create login dbuser with password='abc@1234', default_database=testdb;
create user dbuser for login dbuser with default_schema=dbo;
go
#授予所有权限
exec sp_addrolemember 'db_owner', 'dbuser';
go
use testdb;
go
CREATE TABLE customers ( id Int PRIMARY KEY, name NVARCHAR(30) NOT NULL, addr NVARCHAR(30) NOT NULL, email NVARCHAR(50));
INSERT INTO customers (id,name, addr, email) VALUES (1,'John', N'广州市', 'john@example.com'),(2,'Jane', N'广州市', 'jane@example.com'),(3,'Bob', N'广州市', 'bob@example.com'), (4,'Alice', N'广州市', 'alice@example.com'),(5,N'张三', N'广州市', 'david@example.com'), (6,N'李四', N'广州市', 'emily@example.com'), (7,'Frank', N'广州市', 'frank@example.com'),(8,'Grace', N'广州市', 'grace@example.com'), (9,'赵六', N'广州市', 'henry@example.com'),(10,'Isabella', N'广州市', 'isabella@example.com'),(11,'Jacob', N'广州市', 'jacob@example.com'),(12,'Karen', N'广州市', 'karen@example.com'),(13,'Linda', N'广州市', 'linda@example.com');
go
select * from customers;
go
退出后,可以使用
/opt/mssql-tools/bin/sqlcmd -S localhost -U dbuser -P "abc@1234" -d testdb
直接进入操作。
相关文章
- Docker用Dockerfile定制镜像
- Docker For Windows | Setting Up Docker On Windows
- [windows菜鸟]C#中调用Windows API参考工具
- Docker: docker-compose
- 网络安全系列-三十九: 开源IDS/IPS/网络安全监控平台SELKS docker部署及问题处理
- docker for windows--Windows 10 家庭中文版安装kali并配置更新源
- docker for windows--Windows 10 家庭中文版安装apache zeppelin 0.10.1版本及安全配置
- ElasticSearch第四讲 本地与Docker部署安装ES集群出现的一些问题
- docker容器的文件导入和导出
- Windows下安装docker
- 通过Windows API 创建窗口的过程理解windows消息机制
- 【Windows】+ windows下在某一文件夹下按“shift+鼠标右键”打开CMD窗口
- Docker - docker镜像的制作
- Docker环境搭建与使用:docker的简介与架构以及安装docker
- 基于Docker安装 GitLab
- Docker容器数据卷
- Windows 10家庭版安装Docker指南与windows10home 版开启Hyper-v
- 浅析如何解决终端输入长命令不换行覆盖(Docker容器内输入长命令折行覆盖)问题:如何设置docker容器tty终端窗口大小-Linux stty命令设置串口终端行列数
- 浅析Docker容器的两种运行模式及 docker run 的 --rm 参数的作用及与 docker rm 的区别
- 浅析Docker Volume理解:docker内文件系统是如何工作的、镜像启动容器是如何工作的、为什么要使用Volume、如何使用Volume、匿名卷与实名卷的区别
- docker(15):以docker 方式启动 单机版 tidb
- docker-compose 发布 spring cloud
- docker compose 命令
- WinDocks发布Windows版本的Docker引擎
- Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock