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

  • 1、准备工作
  • (1)检查Docker是否安装
  • (2)启动Docker
  • 2、安装Mysql
  • (1)查找MySQL镜像
  • (2)下载镜像
  • (3)启动MySQL镜像
  • (4)进入容器实例
  • (5)连接数据库
  • 3、隐藏的坑(MySQL5版本存在)


1、准备工作

(1)检查Docker是否安装

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

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

群晖docker桥接模式无法访问 群晖docker无法联网_linux

(2)启动Docker

systemctl start docker

群晖docker桥接模式无法访问 群晖docker无法联网_docker_02

2、安装Mysql

(1)查找MySQL镜像

docker search mysql

群晖docker桥接模式无法访问 群晖docker无法联网_docker_03

(2)下载镜像

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

群晖docker桥接模式无法访问 群晖docker无法联网_linux_04


查看下载完的MySQL镜像

docker images

群晖docker桥接模式无法访问 群晖docker无法联网_群晖docker桥接模式无法访问_05

(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

群晖docker桥接模式无法访问 群晖docker无法联网_linux_06

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

(4)进入容器实例

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

群晖docker桥接模式无法访问 群晖docker无法联网_群晖docker桥接模式无法访问_07

(5)连接数据库

mysql -uroot -p
输入密码:

群晖docker桥接模式无法访问 群晖docker无法联网_docker_08


默认这四个数据库。

群晖docker桥接模式无法访问 群晖docker无法联网_MySQL_09

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

Docker安装MySQL数据库时,有个隐藏的坑。就是数据库编码问题。

下图是Docker里面MySQL终端查看的数据库编码。

群晖docker桥接模式无法访问 群晖docker无法联网_MySQL_10


下图是在数据库管理工具里面查看的数据库编码。

群晖docker桥接模式无法访问 群晖docker无法联网_群晖docker桥接模式无法访问_11


编码不一致,会引起,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)问题已解决