docker启动MySQL
查询mysql镜像
docker search mysql
从docker hub拉取镜像
docker pull mysql:8.0.28
查看mysql镜像
docker images | grep mysql
复制文件
#创建目录 mkdir -p /usr/java/docker/mysql/conf && mkdir -p /usr/java/docker/mysql/data && mkdir -p /usr/java/docker/mysql/logs #启动容器,为了复制文件 docker run -p 3306:3306 --name mysql -d -e MYSQL_ROOT_PASSWORD=“123456” mysql:8.0.28 #复制文件 docker cp mysql:/etc/mysql/my.cnf /usr/java/docker/mysql/conf #删除容器 docker rm -f mysql
使用docker运行mysql
docker run -p 3306:3306 --name mysql \ -v /usr/java/docker/mysql/logs:/var/log/mysql \ -v /usr/java/docker/mysql/data:/var/lib/mysql \ -v /usr/java/docker/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=123456 \ --restart=always \ --privileged=true \ -v /etc/localtime:/etc/localtime \ -m 512m \ -d \ mysql:8.0.28
命令解释说明:
-p 8848:8848 端口映射:前表示主机部分,:后表示容器部分。
–name mysql 指定该容器名称,查看和进行操作都比较方便。
-e MYSQL_ROOT_PASSWORD=123456:docker的MySQL默认的root密码是随机的,这是改一下默认的root用户密码
-v /etc/localtime:/etc/localtime:共享主机的 localtime
-d mysql:8.0.28 在后台运行mysql镜像产生的容器
查看是否运行成功
docker ps | grep mysql
通过navicat连接mysql出现2059的问题
原因:8.0之后mysql更改了密码的加密规则,只要在命令窗口把加密方法改回去即可。
解决办法:
进入到docker容器里面的mysql
docker exec -it mysql bash
进去之后不用切换目录。直接输入下面的命令登录MySQL
mysql -uroot -p123456
然后运行以下SQL
alter user 'root'@'%' identified by 'mimazhaowoyao' password expire never; alter user 'root'@'%' identified with mysql_native_password by 'mimazhaowoyao'; flush privileges;
重新启动docker里面的mysql容器
docker restart mysql
- 通过navicat客户端重新连接即可