最近调查一些开源工具时,发现大部分版本为很多sql脚本不支持mysql5.6,服务器中的mysql卸载安装又很麻烦,于是用Docker启动一个最新版本。

1. 首先,安装Docker:

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
#启动docker服务
systemctl start docker
#设置开机启动
systemctl enable docker
#验证
docker info

2. 拉取mysql最新版镜像并查看是否成功,启动实例并查看

docker pull mysql

$ sudo docker images

sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=要设置的密码 -d mysql

docker container ls

解释:

  • –name:容器名,此处命名为mysql
  • -e:配置信息,此处配置mysql的root用户的登陆密码
  • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口
  • -d:后台运行容器,保证在退出终端后容器继续运行

3. 此时外界还无法访问,需要设置访问权限,首先进入容器中的MySql:

$ sudo docker exec -it mysql bash
$ mysql -uroot -p你的密码

老版本授权的命令为:

grant all privileges on *.* to root@'%' identified by "password";

目前最新的8.0.27版本不再支持此命令,需要执行三条sql:

#创建账户
create user 'root'@'当前ip' identified by  'password';

#赋予权限,with grant option这个选项表示该用户可以将自己拥有的权限授权给别人
grant all privileges on *.* to 'root'@'当前ip' with grant option;

#改密码&授权超用户,flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从MySQL数据库的内置库中提取到内存里
flush privileges;

4. 服务端授权处理完了,但Navicat链接还是会报错:

连接Docker启动的mysql出现:ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded

这是由于当前版本的Navicat还不支持mysql8的加密方式,需要在容器中的mysql输入命令

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

来将所有ip访问当前mysql时身份验证加密方式改为原始的mysql_native_password。

至此就可以使用Navicat来操作数据库了。

另附:Linux中退出sql界面的命令为\q,再退出当前容器命令为ctrl+D,由于启动时已经设置后台运行,退出后mysql依然存活。

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐