1、拉取官方镜像


我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版

  1. docker pull mysql:5.7 # 拉取 mysql 5.7
  2. docker pull mysql # 拉取最新版mysql镜像

2、运行


docker run -p 3306:3306 --name mysql \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=lwc@1234 \
-d mysql:5.7


docker update --restart=always mysql

3、新增配置


[client]
# 对本地的mysql客户端的配置
default-character-set = utf8
# 对其他远程连接的mysql客户端的配置
[mysql]
default-character-set = utf8

# 本地mysql服务的配置
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
lower_case_table_names=1

4、进入docker本地客户端设置远程访问账号

docker exec -it mysql bash 

mysql -uroot -plwc@1234
grant all privileges on *.* to root@'%' identified by "lwc@1234"
flush privileges

mysql8中已经不支持grant all privileges on . to ‘root’@’%’ identified by ‘密码’ with grant option这种写法。

grant all privileges on *.* to 'root'@'%'

链接

docker run -d \
--name mysql \
--restart=always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=lwc@1234 \
mysql:latest

ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘lwc@1234’;

update user set host = ‘%’ where user =’root’;