下载mysql镜像
- https://hub.docker.com/_/mysql 从官网查看mysql镜像
执行下载命令 : [docker pull mysql] 默认下载的是最新的版本
# 下载最新版本docker pull mysql# 下载5.7.32docker pull mysql:5.7.32
运行mysql镜像
# 运行一个5.7.32docker run --name mysql5.7 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.32# 运行8 将3306端口映射到宿主机的3307端口上docker run --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
连接mysql 5.7
连接mysql 8
连接mysql 8 会遇到连接失败的问题。因为登录认证的客户端和服务端都有改变导致。


- 修改办法
```sql
docker mysql -u root -p 登录系统
切换到mysql数据库
use mysql查看user信息
select user, host,plugin, authentication_string from user;本地用户权限修改
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER; ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;非本地权限修改
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER; alter user ‘root’@’%’ identified with mysql_native_password by ‘password’;刷新权限
FLUSH PRIVILEGES;
连接到docker 的mysql
docker exec -it 容器ID /bin/bash 或者通过桌面工具直接打开
- 修改后的权限列表如下- 连接成功- 查看运行日志 docker logs container_id```shell# mysql 8 增加配置sudo docker run --name dqc-mysql8-dev -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_ROOT_HOST=% -v /opt/aml/docker/mysql8-dev/conf:/etc/mysql/conf.d -v /opt/aml/docker/mysql8-dev/data:/var/lib/mysql -p 3307:3306 -d haakco/mysql80 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=1# MYSQL_ROOT_PASSWORD root用户密码# MYSQL_ROOT_HOST=% 不限制访问IP# -v /opt/aml/docker/mysql8-dev/conf:/etc/mysql/conf.d 配置文件目录# -v /opt/aml/docker/mysql8-dev/data:/var/lib/mysql 挂载目录# --lower_case_table_names 大小写敏感# --skip-name-resolve 掉过
sudo docker run --name dqc-mysql8-test -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_ROOT_HOST=% -v /home/dhcc/docker/mysql8-test/conf:/etc/mysql/conf.d -v /home/dhcc/docker/mysql8-test/data:/var/lib/mysql -p 3308:3306 -d haakco/mysql80 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=1 --skip-name-resolve
sudo docker run --name dqc-mysql8-dev -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_ROOT_HOST=% -v /home/dhcc/docker/mysql8-dev/conf:/etc/mysql/conf.d -v /home/dhcc/docker/mysql8-dev/data:/var/lib/mysql -p 3307:3306 -d haakco/mysql80 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=1 --skip-name-resolve
mysql8 因密码问题连接不上可执行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';-- 刷新权限flush privileges;UPDATE user SET Password=PASSWORD('123456') where USER='root';
本地配置文件
[mysqld]local-infile=1secure-file-priv=NULLskip-grant-tables

