最近调查一些开源工具时,发现大部分版本为很多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依然存活。
?
|