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
(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)问题已解决