安装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设置了一次相同的密码就莫名其妙好了??

完结撒花


且乐生前一杯酒