docker部署MySQL时无法启动的解决办法

这篇具有很好参考价值的文章主要介绍了docker部署MySQL时无法启动的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、安装环境 ubuntu18 + docker 

docker run -itd --name mysql-server -v /home/docker/share/mysql-server/log/:/var/log:rw -v /home/docker/share/mysql-server/data/:/var/lib/mysql:rw -v /home/docker/share/mysql-server/conf:/etc/mysql:rw -v /etc/localtime:/etc/localtime:ro --restart=always -e MYSQL_ROOT_PASSWORD=123456 mysql

二、遇到无法启动的问题时,查看日志发现的错误

docker logs --tail -n mysql-server

1、You need to specify one of the following as an environment variable:
    - MYSQL_ROOT_PASSWORD
    - MYSQL_ALLOW_EMPTY_PASSWORD
    - MYSQL_RANDOM_ROOT_PASSWORD

2022-10-24 04:21:40+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started.
2022-10-24 04:21:40+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-10-24 04:21:40+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started.
2022-10-24 04:21:40+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
    You need to specify one of the following as an environment variable:
    - MYSQL_ROOT_PASSWORD
    - MYSQL_ALLOW_EMPTY_PASSWORD
    - MYSQL_RANDOM_ROOT_PASSWORD
2022-10-24 04:21:41+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started.
2022-10-24 04:21:41+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'

解释: 由于mysql没有指定root的登录密码导致无法启动,默认mysql配置是不允许空密码登录的

原因:上面执行命令的时候写错了环境变量, MYSQL_SERVICE_PASSWORD 应该修改成 MYSQL_ROOT_PASSWORD

2、mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)

2022-10-24 04:17:09+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started.
2022-10-24 04:17:09+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
	command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.4hy30uDmqE
	mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such file or directory)
mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 36.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
2022-10-24 04:17:13+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started.
2022-10-24 04:17:13+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config

解释:可能由于不同的mysql版本,/etc/mysql目录下的结构不一样 

原因: 由于mysql的配置目录/etc/mysql下有两个空目录, 上面的执行命令仅挂载了当前目录,导致里面的两个目录没有权限挂载到宿主机内, 应该将挂载目录指定到具体的目录下: -v /home/docker/share/mysql-server/conf:/etc/mysql/conf.d:rw

3、mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)

mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)
2022-10-24T06:43:20.411035Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2022-10-24T06:43:20.411089Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.31) initializing of server in progress as process 40
2022-10-24T06:43:20.412290Z 0 [ERROR] [MY-010460] [Server] --initialize specified but the data directory exists and is not writable. Aborting.
2022-10-24T06:43:20.412294Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2022-10-24T06:43:20.412593Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-10-24T06:43:20.412668Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.31)  MySQL Community Server - GPL.
2022-10-24 06:43:23+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started.
2022-10-24 06:43:24+00:00 [Note] [Entrypoint]: Initializing database files
mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)

原因: 启动时没有足够的权限, /var/lib/mysql目录没有写权限, 可能是部署docker时指定了--user xxx某个权限不足的用户文章来源地址https://www.toymoban.com/news/detail-814875.html

到了这里,关于docker部署MySQL时无法启动的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPS Office 无法启动打印作业的解决办法

    打印机安装驱动后能打印测试页,但用WPS打印文件时提示“WPS Office 无法启动打印作业,请检查打印机是否开机并联机”,该怎么办? 解决方法: 关于这个问题估计很多朋友都遇到过,网上也有很多解决方法但基本上都是大同小异的,都是让启动打印服务“Print Spooler”啥的,这

    2024年02月11日
    浏览(60)
  • 443端口(网页浏览端口)被占用无法启动解决办法

    netstat -ano|findstr \\\"443\\\" //搜索443端口占用情况,并找到进程ID TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 720 //找到PID为720 UDP 0.0.0.0:59443 *:* 7584 ----------------------------------------------- tasklist|findstr \\\"720\\\" //查找PID为720对应的进程名 QQDownload.exe 720 Console 1 56,156 K //找到是QQ旋风占用,结束掉进程。OK 如何

    2024年02月05日
    浏览(44)
  • IDEA 中 Java 项目的main 方法没有启动按钮无法启动解决办法

    1.打开模块设置,检查jdk版本是否正确 Project: SDKs: 2.点击编辑配置 检查jdk以及类名是否正确 3.回到模块设置的Modules,注意这两个地方 src需要是蓝色的Sources,java文件夹不能是蓝色的Sources,否则都会导致main方法没有启动按钮。 (本人之前将java文件夹不小心弄成蓝色的Sou

    2024年02月03日
    浏览(48)
  • Windows系统缺失mqrt.dll文件导致程序无法启动解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个mqrt.dll文件(挑选合适的

    2024年02月03日
    浏览(69)
  • 关于STM32CubeIDE无法正常启动GDB服务端的解决办法

    有时,可能STM32CubeIDE会报错,如下图 Failed to start GDB server。 而且点击Details也只能得知“ST-LINK初始化失败”,建议你检查线缆。 我看了一些CSDN文章再加上ST社区的内容,有以下几种可能: 1、线缆松了或者损坏,可以重新拔插一遍来排除这种问题 2、系统出错,重启即可恢复

    2024年02月04日
    浏览(45)
  • SQL Server 配置管理器中Browser灰色无法启动解决办法

    配置sqlserver远程连接过程中,想要启动sqlserver配置管理器中SQLserver Browser服务发现启动什么的都为灰色,无法启动。 1、直接点属性-服务-启动模式-改为自动,此时就可以启动了  2、第一种办法解决不了的时候,这时候就需要,运行CMD,输入“net user Administrator /Active:yes”回车

    2024年02月16日
    浏览(39)
  • Win10无法启动Windows Update服务的三种解决办法

      无法启动Windows Update服务,这是有使用Win10用户遇到的问题,不知道如何解决,这篇文章是本站给大家带来的Win10无法启动Windows Update服务解决方法。 Win10无法启动Windows Update服务 方法一: 1、首先,按键盘上的【 Win + R 】组合键,打开运行,然后输入【control】命令,按【确

    2024年02月07日
    浏览(41)
  • systemctl docker start 启动失败 解决办法

    1.systemctl docker start 启动失败 yum 卸载重装   无用 重启虚拟机 无用 使用 systemctl status docker.service 查看结果 ● docker.service - Docker Application Container Engine    Loaded: loaded (/etc/systemd/system/docker.service; disabled; vendor preset: disabled)    Active: failed (Result: start-limit) since Sun 2022-11-13 03:01:3

    2024年02月04日
    浏览(76)
  • mysql无法远程访问的解决办法

    更改配置文件 /etc/my.cnf ,在里面插入 skip_grant_tables ,然后重启服务 systemctl restart mysqld 。这样就可以免密本机登录mysql了,但是开了免密登录,mysql服务不会监听任何端口,因为只能本机登录服务。 进入mysql库, select host,user from user; ,查看对应的用户是否开启了远程可访问的

    2023年04月18日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包