拉取镜像
docker search mysql
docker pull mysql
docker pull mysql:version
可以指定自己想要的版本进行pull
启动容器
docker images 查看镜像
docker run -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=12345 --name mysql -v mysqlData:/var/lib/mysql mysql
参数介绍
命令 | 描述 |
---|---|
-d | 后台运行 |
-p 3306:3306 | 宿主机映射到主机端口 宿主机端口(提供外界访问): 主机端口(客户端启动端口) |
–restart=always | 容器重启策略(随着容器一起重启) |
-e MYSQL_ROOT_PASSWORD | 设置初始密码 |
-v | 宿主机挂载主机上的文件 |
–name | 设置容器的名称 |
开启远程连接
docker exec -it 容器id /bin/bash 进入容器
mysql -uroot -p 登录mysql
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; 修改密码
flush privileges; 刷新权限开启远程
测试连接
这里使用navicat进行连接输入ip和端口用户密码
解决方案
本人在安装过程遇到的问题和一些解决方案
一 . 远程连接问题
mysql 8版本
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
flush privileges;低于8版本
update user set host=‘%’ where user=‘root’
flush privileges;
二. 密码问题
重置密码
docker exec -it 容器id /bin/bash 进入容器
echo “skip-grant-tables” >> /etc/mysql/conf.d/docker.cnf 设置跳过权限控制(所有用户都可以登录)
docker restart 容器id 重启容器
docker exec -it 容器id /bin/bash 再次进入
mysql -uroot 登录mysql(无需密码)
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
flush privileges;
修改密码
退出容器 exit
sed -i “s/skip-grant-tables/ /” /etc/mysql/conf.d/docker.cnf 替换刚才设置的跳过权限语句
docker restart 容器id 重启