docker启动mysql 8的版本镜像失败:ERROR: mysqld failed while attempting to check config
开始学习教程是使用mysql5版本,但是我想使用mysql8,启动失败了。
查资料发现:
运行容器时mysql的配置位置错误
mysql5.7的配置在 /etc/mysql
mysql8.0以上的配置位置在 /etc/mysql/conf.d
按mysql版本修改一下配置位置就可以了
具体操作:
https://blog.youkuaiyun.com/MyNAMS/article/details/121173241
但是:
启动时发现没有报错
但是查看运行的容器时,并没有mysql
查看日志分析 docker logs 【容器id】
docker logs 34045ca4d5a4
错误是由于MySQL配置中字符集(CHARACTER SET)和校对规则(COLLATION)不匹配导致的。错误信息指出,校对规则 utf8_unicode_ci 不适用于字符集 utf8mb4。
这通常发生在配置MySQL服务器时,尤其是在Dockerfile或启动脚本中指定了错误的字符集和校对规则组合。在MySQL中,utf8mb4 字符集是 utf8 的超集,它支持存储4字节的Unicode字符,比如某些表情符号。而 utf8_unicode_ci 是专为 utf8 字符集设计的校对规则。
所以进入my.cnf 文件修改字符集
vim /mydata/mysql/conf/my.cnf
再次运行就成功了
中途遇到提示容器名称已被别的容器占用:
删除该容器命令:docker rm 【容器id】
docker rm a151e3ab41ed834a8b6f86aafcd3cd1dd82b1c00d68c60934434a655b0dc05d6
其他命令:
docker ps //列出当前运行的容器
docker ps -a //列出所有容器,包括已停止的
docker logs <container_id> //查看指定容器的日志信息
docker images //查看已下载的镜像列表
docker rmi <name-of-the-image> //删除指定的镜像
docker rm <CONTAINER ID> //根据容器id删除