当前位置: 首页 > article >正文

Linux启动mysql报错

甲方公司意外停电,所有服务器重启后,发现部署在Linux上的mysql数据库启动失败.再加上老员工离职,新接手项目,对Linux系统了解不多,解决起来用时较多,特此记录。

1.启动及报错

1.1 启动语句1

启动语句1:service mysqld restart
报错1.Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

1.2启动语句2

启动语句2 service mysql start

报错2.Failed to restart mysqld.service: Unit not found

2.解决方案

2.1解决方案1

解决方案1:检查配置文件 cd /etc/ cat my.cnf
在这里插入图片描述
没有发现问题

2.2 解决方案2

解决方案2:备份数据库,重装mysql mysqldump -u 用户名 -p 密码 数据库名 > 备份文件名.sql
报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
但是查看已有备份文件
在这里插入图片描述
但是查看大小为0

2.3 解决方案3

开始搜到了此篇文章:https://www.cnblogs.com/ruiy/p/17610612.html
遇到的情况很类似,但查看日志,发现报错信息不同;
查看最近日志 sudo tail -n 100 /var/log/mysqld.log
在这里插入图片描述

定位到问题:Can’t start server: Bind on TCP/IP port: Permission denied
查找资料,发现此错误通常是因为 MySQL 或其他服务尝试绑定到 TCP/IP 端口时缺乏必要的权限
解决办法如下:
遇到 “Can’t start server: Bind on TCP/IP port: Permission denied” 错误,通常是因为 MySQL 或其他服务尝试绑定到 TCP/IP 端口时缺乏必要的权限。以下是一些常见的解决方法:

解决方法

  1. 检查端口使用情况: 使用以下命令检查端口是否已被其他进程占用(例如,MySQL 默认使用 3306 端口): bash sudo netstat -tuln | grep 3306

  2. 使用超级用户权限启动服务: 如果你不是以 root 用户身份运行 MySQL,可以尝试使用 sudo 启动服务: bash sudo systemctl start mysql 或者: bash sudo service mysql start

  3. 检查 MySQL 配置文件: 确保 MySQL 的配置文件(通常是 /etc/my.cnf/etc/mysql/my.cnf)中指定的端口和绑定地址是正确的。例如: ini [mysqld] bind-address = 127.0.0.1 port = 3306

  4. 检查 SELinux 设置: 如果你的系统启用了 SELinux,可能会阻止 MySQL 绑定端口。可以暂时禁用 SELinux 来检查是否是这个原因: bash sudo setenforce 0
    如果这样解决了问题,建议调整 SELinux 策略,而不是永久禁用。

  5. 检查防火墙设置: 确保防火墙没有阻止 MySQL 的端口(默认是 3306),你可以使用以下命令来检查防火墙规则: bash sudo iptables -L 或者,如果使用 firewalldbash sudo firewall-cmd --list-all

  6. 更改 MySQL 数据目录权限: 如果 MySQL 需要访问特定目录(如数据目录),确保该目录的权限和拥有者是正确的: bash sudo chown -R mysql:mysql /var/lib/mysql

重启 MySQL 服务 在进行上述修改后,不要忘记重启 MySQL 服务以应用更改: bash sudo systemctl restart mysql 或: bash sudo service mysql restart

如果问题仍然存在,请查看 MySQL 的错误日志(通常位于 /var/log/mysql/error.log
/var/lib/mysql/hostname.err),以获取更多信息。

3.问题解决

在检查到第5条时
执行 sudo setenforce 0

问题解决!

使用 sudo cat /var/log/audit/audit.log | grep denied查看拒绝日志,果然看到将数据库端口限制了
在这里插入图片描述
在了解SELinux后,明白了必要性
‌SELinux共有三种模式‌:

  • ‌‌Disabled模式‌:SELinux被关闭,不执行任何安全策略。
  • ‌‌Permissive模式‌:SELinux被启用,但不强制执行安全策略。违反策略的操作会被记录,但不会被阻止。
  • ‌‌Enforcing模式‌:SELinux被启用,并强制执行所有安全策略。违反策略的操作会被拒绝并记录日志。

每种模式的特点和用途

  • ‌Disabled模式‌:适用于开发和测试阶段,可以避免SELinux的干扰,方便进行系统调试和开发。
  • ‌Permissive模式‌:适用于测试阶段,可以帮助管理员发现违反策略的操作,而不会中断系统的正常运行。
  • ‌Enforcing模式‌:适用于生产环境,确保系统的安全性,对违反策略的操作进行严格的控制和记录。

临时修改,使用setenforce 命令。一般调试的时候用的多

  • setenforce 0 //设置为Permissive宽容模式
  • setenforce 1 //设置为Enforcing强制模式

这里,暂时采用了临时修改的方式,启动前修改为宽容模式,启动成功后,修改为强制模式


http://www.kler.cn/news/327637.html

相关文章:

  • 【QT Quick】C++交互:QML对象操作
  • Linux应急响应技巧整理
  • 如何确定光纤用几芯 用光纤与网线区别在哪里
  • TensorRT-LLM高级用法
  • 五子棋双人对战项目(1)——WebSocket介绍
  • ubuntu 开启root
  • 太速科技-FMCJ457-基于JESD204B的2路2Gsps AD 2路2Gsps DA FMC子卡
  • LED驱动电路
  • SQL | 查询带有单引号的异常数据和replace与insert插入的区别
  • YOLO11震撼发布!
  • 《Python编程:从入门到实践》数据可视化
  • Linux操作系统中Redis
  • 从源码中学习动态代理模式
  • SpringBoot自定义异常
  • Webpack 4 优化指南:提升构建性能与加载速度
  • 服务器被挂马,导致网站首页被更改怎么解决
  • css的选择器及优先级
  • 在树莓派上基于 LNMP 搭建 Nextcloud
  • Leetcode 206. 反转链表
  • 环形链表的约瑟夫问题
  • 计算机网络基础--认识协议
  • 【测试】混沌工程
  • 滚雪球学MySQL[7.3讲]:数据库日志与审计详解:从错误日志到审计日志的配置与使用
  • [含文档+PPT+源码等]精品大数据项目-基于Django实现的高校图书馆智能推送系统的设计与实现
  • 中国雕塑——孙溟㠭浅析《瘗鹤铭》
  • jmeter中token测试
  • pycharm 配置篇
  • 鸡兔同笼,但是线性代数
  • ubuntu卸载VSFTPD
  • SSH远程连接保持长时间不断开