记:mysql8-docker重启后启动失败mysqld: Error on realpath() on ‘/var/lib/mysql-files‘

项目场景:
由于通知服务器所在区域停电检修,服务器需关机,同时此服务器有mysql8 docker容器也需要停止。


问题描述

mysql8 docker容器停止后,重新启动,报异常mysqld: Error on realpath() on ‘/var/lib/mysql-files’ (Error 2 - No such file or directory)
日志如下:

mysqld: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
2023-11-24T12:58:51.832273Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files
2023-11-24T12:58:51.832342Z 0 [ERROR] [MY-010119] [Server] Aborting

原因分析:

1、以为是mysqld: Error on realpath() on ‘/var/lib/mysql-files’ (Error 2 - No such file or directory) 查找资料,因为my.cnf中secure-file-priv=null ,想着重新创建容器配置该参数来尝试。后来查找资料了解到secure-file-priv只是不允许数据导入导出,应该跟该配置没有关系,从而没有重新创建容器。
2、mysqld: [Warning] World-writable config file ‘/etc/mysql/my.cnf’ is ignored. 留意到该语句,猜测是由于my.cnf被忽略才出现的mysqld: Error on realpath() on ‘/var/lib/mysql-files’ 。查找资料了解到是文件权限问题。

你在使用Docker运行MySQL时遇到了一个警告,内容是“World-writable config file ‘/etc/my.cnf’ is ignored”。这个警告的意思是,MySQL配置文件’/etc/my.cnf’的权限设置过于开放(world-writable),因此被MySQL忽略了。
对于数据库配置文件来说,在大多数情况下只需要数据库管理员或者root用户有读写权即可。如果所有人都可以修改这些配置信息,则可能会导致数据泄露或者其他安全问题。
所以:使其只有root/当前用户有读写权,其他用户只有读的权限 chmod 644 my.cnf 就可以了


解决方案:

修改my.cnf权限:使其只有root/当前用户有读写权,其他用户只有读的权限
chmod 644 my.cnf

其他:

解决完启动问题后,无法通过工具连接mysql数据库:DBeaver7.0.4 连接工具出现[mysql] Public Key Retrieval is not allowed
可能是连接工具本身问题。
解决方案:
mysql docker重启后,DBeaver7.0.4需关闭重新打开,就能正常连接了。


参考文献:

分析关于Mysql容器启动失败恢复的问题
[mysql] Public Key Retrieval is not allowed

当在 Docker 中部署 MySQL 并挂载目录存储数据时,出现 "Error on realpath() on '/var/lib/mysql-files'" 错误可能是由于挂载目录的权限问题引起的。您可以尝试以下解决方法: 1. 检查挂载目录的权限:确保宿主机上的挂载目录具有适当的权限,以便 MySQL 容器可以读取和写入文件。您可以使用以下命令更改权限: ```shell sudo chmod 777 /path/to/mysql-files ``` 这将为挂载目录设置最高权限,但请注意,这可能会带来一定的安全风险。如果需要更严格的权限控制,请根据需求设置适当的权限。 2. 确保挂载目录存在:确保宿主机上指定的挂载目录实际存在。如果目录不存在,您可以手动创建它: ```shell sudo mkdir /path/to/mysql-files ``` 3. 更改 MySQL 配置文件:在 MySQL 配置文件中,您可以指定 MySQL 服务器使用其他目录来访问和操作文件。编辑 MySQL 配置文件(通常是 my.cnf 或 my.ini),并将 `mysql-files` 目录更改为您实际挂载的目录。确保修改以下配置项: ``` [mysqld] ... secure-file-priv = /path/to/mysql-files ... ``` 将 `/path/to/mysql-files` 替换为您实际挂载的目录路径。 4. 重新启动 MySQL 容器:根据您使用的方法,重新启动 MySQL 容器以使更改生效。您可以使用以下命令: ```shell docker restart mysql-container ``` 通过执行上述步骤,您应该能够解决 "Error on realpath() on '/var/lib/mysql-files'" 错误,并使 MySQL 正常访问和操作挂载的目录。请确保在更改权限或修改配置文件时谨慎操作,并根据实际需求做出相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值