当前位置:   article > 正文

Docker环境安装MySql详细步骤_docker安装mysql

docker安装mysql
  • 查看需要安装的镜像版本

dockerHub官网地址:https://hub-stage.docker.com/

1.搜索mysql

2.点击标签

3.点击Tags,查看想要的版本

  • 在安装好docker的linux中执行命令

拉取mysql最新版本

docker pull mysql
  • 1

拉取mysql指定版本

docker pull mysql:5.7
  • 1

拉取结束后,查看本地是否存在

docker images
  • 1

运行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
  • 1
  • 上述命令的含义:
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 : 需要运行的容器名称以及版本号
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

通过此处-v命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动从主机加载到容器中

切换到上述命令配置的主机/mysqldata/mysql/conf目录下

cd /mysqldata/mysql/conf
  • 1

创建my.cof文件

touch my.cof
  • 1

使用vim命令对my.cnf文件添加如下内容,在docker中安装的mysql默认字符集是latinl,需要改成utf8

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
  • 1
  • 2
  • 3
  • 4
  • 5

按esc,输入:wq!,保存退出

过程如下:

重启mysql容器实例,让刚才的配置文件生效

docker restart mysql
  • 1

查看是否启动成功

docker ps
  • 1

自此安装结束

使用navicat连接mysql

连接成功,新建数据库,表

  • 补充

如果需要实现在运行容器实例时就执行SQL脚本,可以在上述命令的基础上添加如下内容:

1.创建如下目录

mkdir /mysqldata/mysql/init
  • 1

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 'userdefaultimg.jpg' COMMENT '用户头像',
PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
-- 插入数据
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');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3.编写启动命令

在原有命令的基础上新建如下内容:

-v /mysqldata/mysql/init:/docker-entrypoint-initdb.d/
  • 1

完整命令:

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
  • 1

释意:
docker中mysql可以在启动时在/docker-entrypoint-initdb.d/目录运行初始化的sql文件,此处通过volume映射到主机的目录/mysqldata/mysql/init下,运行init.sql文件,达到初始化效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/417958
推荐阅读
相关标签
  

闽ICP备14008679号