docker pull mysql:5.7
ps -ef | grep mysql
可知宿主机没有安装mysql,3306端口未被占用
# 使用-e配置环境变量 MYSQL_ROOT_PASSWORD(mysql中root用户的密码)
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker ps
docker exec -it de2d23d8d9c9 /bin/bash
mysql -uroot -p
show databases;
建数据库、建表、插入数据
# 创建db01数据库
create database db01;
# 进入db01数据库
use db01;
# 创建表t1
create table t1(id int, name varchar(20));
# 插入英文正常插入
insert into t1 values(1,'zhangsan');
# 查看数据表
select * from t1;
SQLyog连接数据库,插入数据
查看
启动docker容器后,可以正常的连接、创建数据库,创建表,插入数据。但是插入中文则会报错。
# 插入中文报错
insert into t1 values(3, '王五');
docker上默认字符集编码问题
在mysql中使用以下命令查看数据库字符集
show variables like 'character%';
可知一些字符集是latin1
字符集,所以会报错。
启动容器时没有配置容器卷映射,当容器被删,数据无法找回。危险危险危险。
docker run -d -p 3306:3306 \
--privileged=true \
-v /fanhe/mysql/log:/var/log/mysql \
-v /fanhe/mysql/data:/var/lib/mysql \
-v /fanhe/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
mysql:5.7
-d:后台运行
-p 3306:3306 端口映射
--privileged=true 容器数据卷权限开启
-v /fanhe/mysql/log:/var/log/mysql \ 宿主机:mysql容器 日志映射
-v /fanhe/mysql/data:/var/lib/mysql \ 宿主机:mysql容器 数据映射
-v /fanhemysql/conf:/etc/mysql/conf.d \ 宿主机:mysql容器 配置映射
-e MYSQL_ROOT_PASSWORD=123456 \ Mysql数据库密码
--name mysql \ 数据库名字
mysql:5.7 数据库版本
通过容器卷同步给mysql实例,解决中文乱码问题
进入配置文件/fanhe/mysql/conf目录,新建my.cnf并写入
cd /fanhe/mysql/conf
vim my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
Character_set_server = utf8
docker restart mysql
docker exec -it mysql /bin/bash
# 创建db01数据库
create database db01;
# 进入db01数据库
use db01;
# 创建表t1
create table t1(id int, name varchar(20));
# 插入英文
insert into t1 values(1,'zhangsan');
# 查看数据表
select * from t1;
# 插入中文
insert into t1 values(2, '王五');
中文正常插入
docker ps
docker rm -f Mysql容器ID
docker run -d -p 3306:3306 \
--privileged=true \
-v /fanhe/mysql/log:/var/log/mysql \
-v /fanhe/mysql/data:/var/lib/mysql \
-v /fanhe/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
mysql:5.7
命令和前面新建时一模一样
docker exec -it mysql /bin/bash
mysql -uroot -p
use db01;
select * from t1;
新建Mysql容器实例数据依旧存在