1、拉取官方镜像
我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版
docker pull mysql:5.7 # 拉取 mysql 5.7
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’;