docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=111 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/log:/var/log/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-dp 3306:3306 \
mysql:5.7
这里指定了三个数据卷:
-v /root/mysql/log:/var/log/mysql
-v /root/mysql/data:/var/lib/mysql
-v /root/mysql/conf:/etc/mysql/conf.d
在宿主机的/root/mysql/conf 目录(数据卷目录)中
cd /root/mysql/conf
在此目录中新建 my.cnf 文件
vim my.cnf
并在其中键入如下内 容:
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8
配置好后 我们重启mysql容器,使新配置生效。
docker restart mysql
进入容器连接mysql
docker exec -it mysql /bin/bash
mysql -uroot -p
输入密码进入mysql(如果你和我设置的一样 那么密码是111),此时查看当前 mysql 的字符编码,已经全变为了 utf8。这样就解决了乱码问题!
show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
创建数据库与表,并且添加一些数据
create database test;
use test
create table stu(id int, name varchar(20));
insert stu into values(1,'zs');
insert into stu values(2,'ls');
此时再查看宿主机中数据卷目录,已经有了文件。
这样通过数据卷 我们解决了乱码问题和数据安全性问题!!!
Bye..