Docker搭建Mysql
一、docker服务安装正常启动
二、拉取mysql镜像:docker pull mysql:5.7
三、查看镜像:docker images
四、启动镜像:
docker run -p 3306:3306 --name mysql -v /opt/docker/mysql/conf/conf.d:/etc/mysql/conf.d -v /opt/docker/mysql/logs:/var/log/mysql -v /opt/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ="Asia/Shanghai" -d mysql:5.7
命令说明:
-
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-
-v -v /opt/mysql/conf/conf.d:/etc/mysql/conf.d:将主机对应目录挂载到容器的 /etc/mysql/conf.d。
-
-v /opt/mysql/logs:/var/log/mysql:将主机对应目录下的 logs 目录挂载到容器的 /logs。
-
-v /opt/mysql/data/mysql:/var/lib/mysql :将主机对应目录下的data目录挂载到容器的 /var/lib/mysql 。
-
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
- --restart=always 开机只启动(若需要可加上)
ps:
在运行时设置时区
docker run -e TZ="Asia/Shanghai" --name xxxx
以上部署后,大概率出现中文乱码,中文显示???
docker mysql 容器中文显示"?"[问号]问题处理
修改 Docker 中 MySQL 容器的编码
找到问题点:
登录mysql,执行下面这个命令查看你数据库的编码格式
show variables like 'char%';
这个latin1,是导致中文显示"?"[问号]的原因
处理方法:
Docker容器 MySQL中文乱码解决方案
docker exec进入容器
1
|
sudo docker exec -it 588340b778f6 bash |
执行以下命令,将 character-set-server=utf8 写入mysql配置文件
1
|
echo "character-set-server=utf8" >> /etc/mysql/mysql .conf.d /mysqld .cnf |
2
|
echo "default-time-zone = '+08:00'" >> /etc/mysql/mysql.conf.d/mysqld.cnf
|
修改时区
重启mysql 容器使以上修改生效
1
|
sudo docker restart 588340b778f6 |
查看编码:
show variables like 'char%';
查看时区:SELECT NOW()