Linux数据启动成功,但连接失败解决过程记录

问题发生在,尝试把腾讯云服务下的数据库开放远程连接后,不知道修改了哪个配置。导致本地后台运行的项目报错。

首先重新启动本地jar包,查看报错,显示数据库连接不上了。

既然是数据库问题,那就先看看是不是本地数据库没有启动。

奇怪的是使用systemctl status mysqld命令就会报错,显示启动失败

但是systemctl status mysql却是可以正常运行

既然使用mysql -uroot -p可以正常进入,那么mysql应该是启动成功了的

思索后上网查了一下发现,原来在 Ubuntu 系统中,MySQL 服务的名称是 `mysql` 而不是 `mysqld`。因此,当你运行 `systemctl status mysql` 时,它会检查 `mysql` 服务的状态,而运行 `systemctl status mysqld` 时,它会尝试检查 `mysqld` 服务的状态,但是在 Ubuntu 系统中,`mysqld` 服务通常不存在。

如果你的 MySQL 服务名称是 `mysql`,那么只有使用 `systemctl status mysql` 命令才能正确显示 MySQL 服务的状态。如果你运行 `systemctl status mysqld`,它会尝试查找一个名为 `mysqld` 的服务,并因此显示启动失败。

既然mysql启动成功了话,那就看看日志有没有报错吧

先去‘/etc/mysql/mysql.conf.d’ 查看一下配置文件 (其实我最先怀疑的就是之前为了连接远程数据库时,修改了配置文件中的一些参数导致了数据库连不上,但是在检查参数后,并没有发现问题)

配置文件里有问题日志的路径,继续查看问题日志,显示报错如下

2024-04-27T09:37:43.002670Z 0 [Note] /etc/init.d/mysqld: Shutdown complete
2024-04-27T09:37:38.401161Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
2024-04-27T09:37:39.401258Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
2024-04-27T09:37:42.401669Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
2024-04-27T09:37:42.401684Z 0 [Note] InnoDB: Unable to open the first data file
2024-04-27T09:37:42.401707Z 0 [ERROR] InnoDB: Operating system error number 11 in a file operation.
2024-04-27T09:37:42.401714Z 0 [ERROR] InnoDB: Error number 11 means 'Resource temporarily unavailable'
2024-04-27T09:37:42.401718Z 0 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
2024-04-27T09:37:42.401721Z 0 [ERROR] InnoDB: Cannot open datafile './ibdata1'

日志中显示了 MySQL 试图启动但失败的情况。主要问题是 InnoDB 存储引擎无法锁定 'ibdata1'文件。

'ibdata1'文件被占用导致无法获取

这就奇怪了,我也没手动使用过这个文件,怎么会出现占用呢,但是既然报错这么说,那就查看一下文件的使用情况吧。在终端运行以下命令

sudo lsof /var/lib/mysql/ibdata1

这将显示正在使用 ibdata1 文件的进程,以及这些进程的详细信息。如果没有显示任何输出,那么就没有进程在使用该文件,如果有输出,则会列出使用该文件的进程及其相关信息。

根据输出,可以看到有一个 mysqld 进程正在使用 ibdata1 文件。这表明MySQL服务(mysqld)正在使用该文件。

虽然不知道这个mysqld哪儿来的,既然它占用了ibdatal文件导致mysql无法运行,那就使用如下命令杀死所有 MySQL 进程。

sudo pkill -f mysqld

 然后再运行项目,大功告成,直接就跑起来了

但还是没弄清楚为什么‘ibdata1 ’被占用了,在此记录一下

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值