Docker安装
1 | docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.23 |
不过我们一般讲mysql的数据文件挂载在容器外,这样重启容器不会数据。
对应脚本docker_run.sh
1 | #!/bin/bash |
也可以使用docker-compose
安装
1 | version: '3.1' |
远程链接
安装后,mysql用户默认用户root只允许localhost
本地链接。
可以通过如下方式查看。
1 | # 查看版本 |
如果我们希望能够远程链接,需要分配权限。%
,代表不限制链接客户端地址。
1 | grant all privileges on *.* to root@'%' identified by '123345'; |
Docker 启动失败
Data Dictionary initialization failed.
Sequel pro远程链接失败
用在IDEA工具中,可以连接。使用mysql -u root -p
也能登陆
但是使用客户端工具Sequel pro,缺提示MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded...
原因
安全模块中的身份验证机制默认使用caching_sha2_password方式,以前的版本机制是mysql_native_password方式。
如果是5.x版本升级到8.x.x的版本,那么原有的用户身份验证机制是不会变的。
但是有新用户加入,则就需要注意了,新用户将用使用caching_sha2_password身份验证机制。
可以查看
1 | select host,user,authentication_string,plugin from user; |
解决方案
我们可以修改对应的身份验证机制
1 | alter user 'root'@'%' identified with mysql_native_password by '123456'; |
sequel Pro 不支持mysql8
可能出现连接成功后,无法使用的情况。无法显示数据库。这是因为下载版本sequel不支持mysql8,可以下载新 版本。
下载Sequel Pro test版本 https://sequelpro.com/test-builds
更新Docker Desktop后启动失败
更新Docker Desktop后启动MySQL报Data Dictionary initialization failed错误
这个问题是由于文件共享格式造成的。
应该不止MySQL一个容器会存在这个问题,理论上可以通过改变容器的数据格式或修改Docker Desktop配置来解决问题,考虑到改变容器比较麻烦而且会带来各种问题,所以还是直接修改Docker Desktop配置好了。
打开Docker Desktop点右上角的“Settings”图标在“General”栏。
**去掉 **勾选“Use gRPC FUSE for file sharing”(Uncheck to use the legacy osxfs file sharing instead.)
然后点右下角的“Apply&Restart”等启动完再docker start mysql就可以正常运行MySQL容器了。