Docker下安装mysql超详细步骤
- 查看需要安装的镜像版本
dockerHub官网地址
- 搜索mysql
2.点击标签
3.点击Tags,查看想要的版本号
- 在安装好docker的linux中执行命令
拉取mysql最新版本
docker pull mysql
拉取mysql指定版本
docker pull mysql:5.7
拉取结束后,查看本地是否存在
docker images
运行mysql
docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql -v /mysqldata/mysql/data:/var/lib/mysql -v /mysqldata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
上述命令的含义:
docker run
:在docker中启动一个容器实例
-d
:该容器在后台运行
-p 3306:3306
:容器与主机映射端口为, 3306(主机端口,即外部连接mysql使用的端口号): 3306(容器端口)
--name mysql
:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql
:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql
:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql
:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root
:设置当前mysql实例的密码为root
mysql:5.7
:需要运行的容器名称以及版本号
通过此处-v 命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动重主机加载到容器当中
切换到上述命令配置的主机/mysqldata/mysql/conf
目录下
cd /mysqldata/mysql/conf
创建 my.cnf
文件
touch my.cnf
使用vim
命令对 my.cnf
文件添加如下内容,在docker中安装的mysql默认字符集是latin1
,需要改成utf8
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
按esc,输入:wq!
,保存退出
过程如下:
重启mysql容器实例,让刚才的配置文件生效
docker restart mysql
查看是否启动成功
docker ps
自此安装结束
使用navicat
连接mysql
连接成功,新建数据库,表
- 补充
如果需要实现在运行容器实例时就执行SQL脚本
,可以在上速命令的基础之上添加如下内容:
1.创建如下目录
mkdir /mysqldata/mysql/init
2.在目录/mysqldata/mysql/init
下创建名为init.sql
的初始文件,该文件存放数据库需要初始化的内容
init.sql
##创建一个user用户,密码为123456
CREATE USER 'user'@'%' IDENTIFIED BY '123456';
##给user用户赋予数据库的所有权限
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
##刷新用户
flush privileges;
##创建数据库
create database test;
##建表
CREATE TABLE `userinfo` (
`uid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'uid',
`userid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户id',
`nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`usign` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`uimg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '/pic/userdefaultimg.jpg' COMMENT '用户头像',
PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
##插入数据
INSERT INTO `userinfo` VALUES (1, '1571476959767947441', '小A', '无冥冥之志者,无昭昭之明;无惛惛之事者,无赫赫之功。', '/pic/xa.jpg');
INSERT INTO `userinfo` VALUES (2, '1571476959767947449', '小B', '与我捻熄灯,同我书半生。问我粥可温,同我立黄昏。', '/pic/xb.jpg');
INSERT INTO `userinfo` VALUES (3, '1571476959767947427', '小C', '人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。', '/pic/xc.jpeg');
INSERT INTO `userinfo` VALUES (4, '1575254996716916627', '小D', '心之所向,素履以往,生如逆旅,一苇以航。', '/pic/xd.jpeg');
3.编写启动命令
在原有命令的基础上新增如下内容:
-v /mysqldata/mysql/init:/docker-entrypoint-initdb.d/
完整命令:
docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql -v /mysqldata/mysql/data:/var/lib/mysql -v /mysqldata/mysql/conf:/etc/mysql -v /mysqldata/mysql/init:/docker-entrypoint-initdb.d/ -e MYSQL_ROOT_PASSWORD=root mysql:5.7
释意:
docker中mysql可以在启动时在/docker-entrypoint-initdb.d/
目录运行初始化的sql
文件,此处通过volume映射到主机的目录/mysqldata/mysql/init
下,运行init.sql
文件,达到初始化效果
相关文章
- 《数据密集型应用系统设计》读书笔记(三)
- 刷新REDS4数据集记录!多级视频超分辨率算法:PP-MSVSR
- 关于redis性能问题分析和优化,看这篇就够了
- 最新的省市区三级地区 MySQL 表数据
- mysql中插入数据时Duplicate entry ” for key ‘PRIMARY’的解决方案
- Mysql 删除重复的数据,根据id索引(排除最小的数据)
- 第六章-Spring Boot 数据访问
- 多个物种的肾脏部位巨噬细胞比较
- 【redis源码学习】redis 专属“链表”:ziplist
- 【redis源码学习】快速列表 quicklist
- 类器官外显子测序数据标准分析
- 【redis源码学习】看看redis的“哈希表”实现
- MySQL的int (10) 和 int (11) 的区别
- Redis如何保证分布式锁的原子性?
- dotnet OpenXML SDK 形状几何 Geometry 的计算公式含义
- void 指针笔记
- Prometheus时序数据库-报警的计算Prometheus时序数据库-报警的计算
- mongodb基本操作
- 计算最大变化值
- MySQL虚拟列在电商场景下的应用