docker运行mysql并远程连接踩坑
一、安装docker
删除旧版本docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engin
安装docker
yum install docker
启动docker
systemctl start docker.service # 开启docker
systemctl enable docker.service # 开机自启动
systemtcl status docker.service # 查看docker的运行状态
安装MySQL
docker pull mysql:8.0.23
启动docker
docker images
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
进入MySQL
docker exec -it mysql bash
操作MySQL部分
进入mysql
mysql -uroot -p
5.7及之前版本
update user set host ='%'where user ='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
8.0版本及之后的
//创建一个用户
create user 'root'@'%' identified by '123456';
//授权用户为超级管理用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
连接密码验证方式,由native改成了ssh2,Navicat不支持,要如下操作:
//更改用户密码验证方式
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
//刷新更改密码验证方式之后的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
//刷新权限
FLUSH PRIVILEGES;
现在已经可以用自己电脑上Navicat连接了
从现有容器创造一个镜像
MySQL 8.0版本之后密码编码方式不同
所以在去容器中
先安装vim
apt-get update
apt-get install vim
然后
vi /etc/mysql/my.cnf中
加上
default_authentication_plugin=mysql_native_password
保存退出,然后再退出至宿主机
docker commit -a-"zhang" -m="having set my.cnf" [你的容器ID] zhang/mysql:1.1
然后以后打开这个镜像就直接可以用了
参考
https://blog.csdn.net/weixin_40693633/article/details/84074459
https://blog.csdn.net/u011415782/article/details/112800109