重要的事情
在MySQL崩溃时,第一件事情说就是备份,找到数据库安装的位置下面有个data文件夹直接进行tar包之后
在进行操作
问题背景
在尝试启动MySQL服务时,遇到了启动不成功的问题。通过查看MySQL的错误日志文件,发现了导致启动失败的具体原因,并成功解决了该问题。
错误日志分析
错误日志内容
2022-02-26T08:57:37.597100Z 0 [Warning] [MY-000081] [Server] option 'max_allowed_packet': unsigned value 107374182400 adjusted to 1073741824.2022-02-26T08:57:37.597178Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2022-02-26T08:57:37.597266Z 0 [System] [MY-010116] [Server] /www/server/mysql/bin/mysqld (mysqld 8.0.24) starting as process 11150
2022-02-26T08:57:37.634849Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-02-26T08:57:37.881075Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2022-02-26T08:57:37.882114Z 1 [ERROR] [MY-013178] [Server] Execution of server-side SQL statement 'CREATE SCHEMA mysql DEFAULT COLLATE utf8mb4_general_ci' failed with error code = 1049, error message = 'System schema directory does not exist.'.
2022-02-26T08:57:37.882402Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2022-02-26T08:57:37.882672Z 0 [ERROR] [MY-010119] [Server] Aborting 2022-02-26T08:57:38.403640Z 0 [System] [MY-010910] [Server] /www/server/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.24) Source distribution.
关键错误分析
- 警告信息:关于
max_allowed_packet
的警告和SQL模式的使用建议,虽然不影响启动,但应注意调整配置以避免潜在问题。 - 错误:
Execution of server-side SQL statement 'CREATE SCHEMA mysql DEFAULT COLLATE utf8mb4_general_ci' failed with error code = 1049, error message = 'System schema directory does not exist.'
表明MySQL在尝试创建或访问系统数据库mysql
时遇到了问题,因为它找不到相应的目录。
解决方案
步骤概述
- 检查数据目录:确认MySQL的数据目录(通常是
/var/lib/mysql
或自定义目录如/www/server/mysql/data
)下是否存在mysql
文件夹。 - 创建缺失的文件夹:如果
mysql
文件夹不存在,则需要在数据目录下创建它。 - 设置权限:确保MySQL用户(如
mysql
用户)对该文件夹有适当的读写权限。 - 创建必要文件:在
mysql
文件夹内,可能需要创建一些特定的文件,如db.opt
,并配置适当的字符集和校对规则。
具体操作
- 在
/www/server/mysql/data
目录下创建mysql
文件夹。 - 设置文件夹权限,例如使用
chown -R mysql:mysql /www/server/mysql/data/mysql
命令。 - 在
mysql
文件夹内创建db.opt
文件,并添加内容:
default-character-set=utf8
default-collation=utf8\_general\_ci
然后就启动成功了!!!
总结一下吧:
碰到问题,一定要看错误日志,围绕着错误日志去解决就好了。
linux中所有的东西,都只是文件和文件夹