安装msyql的时候踩的坑比oracle多很多,特别是在开放远程权限这里,折腾了很久,遂做个整理
环境照旧:阿里云HK,Centos7.3,Docker18.09.6
PULL镜像
这里用的是官方的8.0镜像,直接pull后面跟上版本号就行了
docker pull mysql:8.0
启动容器
docker run \
--name mysql \
-p 3306:3306 \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root \
-v /var/lib/mysql/:/var/lib/mysql/ \
-d mysql:8.0
- --restart=always # 自动重启容器
- -e MYSQL_ROOT_PASSWORD=root # 设置root密码,可以随意,因为等会儿会改
- -v /var/lib/mysql/:/var/lib/mysql/ # 挂载到本地
进入容器
到这里应该mysql已经跑起来了,可以用ps看一看,但是还要进行配置,不然无法远程连接,首先进入容器
docker exec -it mysql /bin/bash
此时进入了容器,再使用mysql命令行工具连接
mysql -uroot -proot
使用mysql数据库
mysql> use mysql;
修改加密方式,允许远程连接
mysql8.0后默认的密码验证方式修改了, 使用
mysql> select host,user,plugin from user;
查询用户表,可以看到默认的方式是caching_sha2_password,使用mysql workbench可以连接,但是navicat连接的方式还是旧的,所以要修改回mysql_native_password
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
然后再修改root密码,开启远程访问的权限
mysql> alter user 'root'@'%' identified by '[your password]';
最后刷新权限
mysql> flush privileges;
一些未知的bug
按理说这样配置后就能远程连接了,但是我用mysql workbench连接的时候报Access denied错误了

但是在服务器使用命令行连接没有任何问题,最后没办法重新使用alter设置了一次相同的密码就莫名其妙好了??
完结撒花
Comments | NOTHING