systemctl status mysqld.service或者systemctl start mysqld 启动失败的解决办法

Posted zhihao_Guo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了systemctl status mysqld.service或者systemctl start mysqld 启动失败的解决办法相关的知识,希望对你有一定的参考价值。

报错过程:

mysql需要启动,执行一下命令启动mysql:

systemctl start  mysqld.service

结果出现如下提示

Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

在这里给大家一个提示,因为每个人的报错原因不同,我们需要去查看mysql的日志

vi /var/log/mysqld.log

如果mysql日志太多,可以通过dG将mysql的日志全部删除,之后再执行启动musql的命令

systemctl start  mysqld.service
vi /var/log/mysqld.log  // 查看报错日志

找到日志中出现error的地方,根据具体问题搜索具体博客的解决办法

我的日志文件中报错大致如下。

mysqld: Table 'mysql.plugin' doesn't exist
2021-04-27T08:55:46.468329Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2021-04-27T08:55:46.468825Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-04-27T08:55:46.470106Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2021-04-27T08:55:46.470119Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
2021-04-27T08:55:46.471231Z 0 [Warning] CA certificate ca.pem is self signed.
2021-04-27T08:55:46.471281Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2021-04-27T08:55:46.472264Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2021-04-27T08:55:46.472311Z 0 [Note] IPv6 is available.
2021-04-27T08:55:46.472322Z 0 [Note]   - '::' resolves to '::';
2021-04-27T08:55:46.472345Z 0 [Note] Server socket created on IP: '::'.
2021-04-27T08:55:46.472543Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2021-04-27T08:55:46.472624Z 0 [Note] InnoDB: Buffer pool(s) load completed at 210427 16:55:46
2021-04-27T08:55:46.476676Z 0 [Warning] Failed to open optimizer cost constant tables
 
2021-04-27T08:55:46.476791Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2021-04-27T08:55:46.476806Z 0 [ERROR] Fatal error: Failed to initialize ACL/grant/time zones structures or failed to remove temporary table files.
2021-04-27T08:55:46.476836Z 0 [ERROR] Aborting

从上面的报错可以看出,Mysql初始化出了问题。执行以下命令:

cd /   
rm -rf /var/lib/mysql/*
mysqld --initialize --user=mysql --datadir=/var/lib/mysql

之后重启mysql 并查看mysql的状态

systemctl restart mysqld
systemctl status mysqld


MySQL第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件中,查看密码

sudo grep 'temporary password' /var/log/mysqld.log


可以看到,我的初始密码为 iFqxsrSB&10o,准备登陆

mysql -uroot -p 


登陆成功后,修改密码,并开启访问权限

set global validate_password_length=4;      # 设置密码长度最低位数,适用于老版本
set global validate_password_policy=LOW;	# 设置密码安全等级低,便于密码可以修改成root,适用于老版本
set password=password('root');				# 设置密码为root

# 开启访问权限
grant all on *.* to 'root'@'%' identified by 'root';
flush privileges;


之后退出mysql,再次通过root密码登录mysql

mysql -uroot -proot


登陆成功!

systemctl status 显示非活动死机

【中文标题】systemctl status 显示非活动死机【英文标题】:systemctl status shows inactive dead 【发布时间】:2017-02-13 18:36:51 【问题描述】:

我正在尝试编写自己的(简单的)systemd 服务来做一些简单的事情。(比如使用 shell 脚本将数字 1 到 10 写入文件)。 我的服务文件如下所示。

[Unit]
Description=NandaGopal
Documentation=https://google.com
After=multi-user.target

[Service]
Type=forking  
RemainAfterExit=yes
ExecStart=/usr/bin/hello.sh &

[Install]
RequiredBy = multi-user.target

这是我的 shell 脚本。

#!/usr/bin/env bash

source /etc/profile
a=0
while [ $a -lt 10 ]
do
   echo $a >> /var/log//t.txt
        a=`expr $a + 1`
done

由于某种原因,服务没有出现,systemctl 显示以下输出。

root@TARGET:~ >systemctl status -l hello
* hello.service - NandaGopal
   Loaded: loaded (/usr/lib/systemd/system/hello.service; disabled; vendor     preset: enabled)
   Active: inactive (dead)
    Docs: https://google.com

一直试图找出过去 2 天出了什么问题。

【问题讨论】:

日志文件中是否有任何内容?你确定你可以写信到那个位置吗? 你是否让chmod +x myScript的脚本可执行?祝你好运。 @l0b0 是的,有写访问权限。 @shellter 我猜脚本有写权限。 【参考方案1】: 您已设置Type=Forking,但您的服务不起作用。试试 Type=oneshot 您的ExecStart 行有一个“&”,这不是必需的。 该服务是disabled,这意味着它不是enabled 在启动时启动的。您应该运行 systemctl enable hello 将其设置为在启动时启动。

您可以检查man systemd.directives 以查找您可以在unit 文件中使用的所有指令的索引。

【讨论】:

非常感谢您的帮助。 [:)] Type=oneshot 和 systemctl enable 成功了。我使用的是模拟器环境,当我为服务创建符号链接时,它运行顺利。 :) “服务被禁用,这意味着它没有在启动时启动” - 这不一定是真的。 Systemd 似乎偶尔会丢失配置信息,例如将服务或计时器设置为启用,因此计时器或服务会在机器启动时启动。另见Systemd timer is lost after reboot? @PhilipRego 您应该创建一个新的完整问题来说明您的完整问题。但是使用unix.stackexchange.com——它更适合systemd问题。【参考方案2】:

几点:

    如果使用Type=forking,建议指定PidFile。

    在您的情况下,Type=simple 和没有& 的 ExecStart 将起作用。

    使用systemctl start service-name启动服务

    然后使用systemctl status service-name检查其状态。 如果服务未启动,状态将变为非活动/死亡。

【讨论】:

以上是关于systemctl status mysqld.service或者systemctl start mysqld 启动失败的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

systemctl status 显示非活动死机

mysqld.service 的作业失败 请参阅“systemctl status mysqld.service”

mysqld.service 的作业失败 请参阅“systemctl status mysqld.service”

centos7 systemctl status servicename执行慢的问题

启动 apache2 时出现“systemctl status apache2.service”错误

有关linux中出现systemctl status network.service“ and “journalctl -xe“ for details.