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

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强制模式

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

相关文章:

  • 字符和Ascll码表
  • android compose ScrollableTabRow indicator 指示器设置宽度
  • uni-app #ifdef #ifndef #endif的使用和区别
  • 【架构】NewSQL
  • 去中心化自治组织(DAO)
  • [Python学习日记-34] 一篇文章让你弄懂 Python 中牛逼的递归函数
  • 【前端安全】js逆向之微信公众号登录密码
  • Golang | Leetcode Golang题解之第440题字典序的第K小数字
  • java-快速将普通main类变为javafx类,并加载自定义fxml
  • go 安装三方库
  • Unity开发绘画板——01.前言
  • C++之String类(下)
  • TypeScript 算法手册【插入排序】
  • 五、CAN总线
  • 《NoSQL》非关系型数据库MongoDB 学习笔记!
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • docker容器内的网络抓包
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Octave 入门
  • React-redux的原理以及使用
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Webpack 4 学习01(基础配置)
  • 编写符合Python风格的对象
  • 对象引论
  • 汉诺塔算法
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 学习Vue.js的五个小例子
  • 数据可视化之下发图实践
  • ​如何防止网络攻击?
  • # Maven错误Error executing Maven
  • # wps必须要登录激活才能使用吗?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #单片机(TB6600驱动42步进电机)
  • #微信小程序:微信小程序常见的配置传值
  • (3)nginx 配置(nginx.conf)
  • (NSDate) 时间 (time )比较
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (六)c52学习之旅-独立按键
  • (七)Activiti-modeler中文支持
  • (三分钟)速览传统边缘检测算子
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十七)、Mac 安装k8s
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)socket Aio demo
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • 、写入Shellcode到注册表上线
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .gitignore文件---让git自动忽略指定文件
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net Core中Quartz的使用方法
  • .net dataexcel winform控件 更新 日志
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。