15、Docker安装MySQL数据库(适用于Linux,联网版)

1、准备工作

(1)检查Docker是否安装

确认本机安装Docker。如果未安装,请查看该文章。
十三、Docker安装教程-CentOS7(在线版)

# 查看本机安装的Docker版本
docker version

在这里插入图片描述

(2)启动Docker

systemctl start docker

在这里插入图片描述

2、安装Mysql

(1)查找MySQL镜像

docker search mysql

在这里插入图片描述

(2)下载镜像

# 语法:docker pull mysql:[TAG]
# 不写版本,默认最新
docker pull mysql

在这里插入图片描述
查看下载完的MySQL镜像

docker images

在这里插入图片描述

(3)启动MySQL镜像

# 语法:docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[密码] -d mysql:[TAG]
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

在这里插入图片描述

注意:
如果Linux上安装过MySQL数据库,此时在Docker上运行MySQL镜像时会出现端口冲突的错误。
解决办法一:停掉Linux上的MySQL服务
解决办法二:Docker上启动MySQL镜像时更换端口

(4)进入容器实例

# 语法:docker exec -it 容器ID /bin/bash
docker exec -it 1c6bc8e94abb /bin/bash

在这里插入图片描述

(5)连接数据库

mysql -uroot -p
输入密码:

在这里插入图片描述
默认这四个数据库。
在这里插入图片描述

3、隐藏的坑(MySQL5版本存在)

Docker安装MySQL数据库时,有个隐藏的坑。就是数据库编码问题。
下图是Docker里面MySQL终端查看的数据库编码。
在这里插入图片描述
下图是在数据库管理工具里面查看的数据库编码。
在这里插入图片描述
编码不一致,会引起,insert中文数据时,会报错。
解决办法:
(1)安装容器卷(工作中一定要安装)
容器卷作用: 宿主机和容器实现文件共享。防止容器被误删除,修改配置文件等作用。
本次使用 –privileged=true 命令,扩大容器的权限解决挂载目录没有权限的问题。

# 语法:docker run -d -p 3306:3306 --privileged=true -v 宿主机目录1:/var/log/mysql -v 宿主机目录2:/var/lib/mysql -v 宿主机目录3:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:[TAG]
docker run -d -p 3306:3306 --privileged=true -v /app/mysql/log:/var/log/mysql -v /app/mysql/data:/var/lib/mysql -v /app/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql

(2)配置文件修改

cd /app/mysql/conf
# 如果没有my.cnf,就新建个
touch my.cnf

将以下内容复制到 my.cnf 文件中

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

(3)重启MySQL容器

# 重启mysql容器
socker restart mysql
# 进入mysql容器内部
docker exec -it mysql /bin/bash
# 进入mysql终端
mysql -uroot -p
# 查看数据库编码
SHOW VARIABLES LIKE 'character%'

(4)问题已解决

猜你喜欢

转载自blog.csdn.net/weixin_61470350/article/details/129050383