1、创建目录
mkdir -p /work/docker/mysql/conf
mkdir -p /work/docker/mysql/data
mkdir -p /work/docker/mysql/log
2、创建配置文件
touch /work/docker/mysql/conf/my.cnf
3、输入内容
vi /work/docker/mysql/conf/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
#服务端口号 默认3306
port=3306
datadir = /work/docker/mysql/data
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 最大连接数
max_connections=200
# 连接失败的最大次数。防止有人从该主机试图攻击数据库系统
max_connect_errors=20
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
4、创建容器
docker run -p 3306:3306 \
--name mysql_8 \
--privileged=true \
--restart=always \
-v /work/docker/mysql/log:/var/log/mysql \
-v /work/docker/mysql/data:/var/lib/mysql \
-v /work/docker/mysql/conf:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:latest
5、远程访问,以及创建远程访问密码(前者初始密码123456只能localhost本地访问)
#进入容器
docker exec -it mysql_8 /bin/bash
#登录
mysql -u root -p
#创建可以远程访问的密码
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
#也可以修改密码的加密方式,
MySQL8.x默认采用 caching-sha2-password 加密,有可能旧的客户端不支持,可改为 mysql_native_password;
如果Navicate客户端较新,已经支持mysql8,也可以不修改这一步
CREATE USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';
#激活修改
FLUSH PRIVILEGES;
#退出MySQL
exit