View on GitHub

lossme.github.io

https://lossme.github.io

Docker安装MySQL并设置UTF8编码

这么理解吧

docker中所说的image(镜像)相当于创建虚拟机时使用的iso文件

docker中所说的container(容器)相当于你创建的虚拟机

创建容器

# 拉取镜像
sudo docker pull mysql/mysql-server:5.7
# 从镜像中创建容器
sudo docker run \
    -v /数据文件保存目录:/var/lib/mysql \
    -v /配置文件目录/mysqld_charset.cnf:/etc/mysql/my.cnf \
    --name=mydb \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql/mysql-server:5.7

配置文件mysqld_charset.cnf,内容如下:

[mysqld]
character_set_server=utf8
character_set_filesystem=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
skip-character-set-client-handshake

注意: mysqld_charset.cnf文件权限不能过大,拥有者有读写权限即可,这里我设置为644

若启动时没有设置密码,会生一个随机密码。登陆后需要重新设置

# 查看密码
sudo docker logs mydb
# 进入容器
sudo docker exec -it mydb mysql -uroot -p
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'passwd123';

设置root用户允许外部访问

# 进入容器
sudo docker exec -it mydb mysql -uroot -p
# 设置root用户允许外部访问
mysql> use mysql;
mysql> UPDATE user SET host = '%' WHERE user = 'root';

查看字符集

mysql> SHOW VARIABLES LIKE '%char%';
mysql> SHOW VARIABLES LIKE 'collation_%';

设置导入文件大限制

mysql> SET GLOBAL max_allowed_packet=1024*1024*1024;

进入容器

sudo docker exec -it mydb /bin/bash

启动容器

sudo docker start mydb

删除容器

sudo docker rm mydb