CentOS7安装mariadb后再安装msyql时systemctl status mysqld无法启动

本文记录了一次MySQL服务启动失败的故障排查过程,通过修改my.cnf配置文件解决了权限问题导致的服务无法正常启动的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[mysql@cnski:/var/log]# systemctl start mysqld

[6]+  已停止               systemctl start mysqld

-----------------长时间等待,不能结束,强行终端------------------

查看状态

[mysql@cnski:/var/log]# systemctl status mysqld

● mysqld.service - MySQL Community Server

   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)

   Active: activating (start-post) (Result: exit-code) since 五 2016-01-08 14:24:37 CST; 4min 50s ago

  Process: 5012 ExecStart=/usr/bin/mysqld_safe (code=exited, status=1/FAILURE)

  Process: 5001 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)

 Main PID: 5012 (code=exited, status=1/FAILURE);         : 5013 (mysql-systemd-s)

   CGroup: /system.slice/mysqld.service

           └─control

             ├─5013 /bin/bash /usr/bin/mysql-systemd-start post

             └─6366 sleep 1


1月 08 14:24:37 cnski mysqld_safe[5012]: 160108 14:24:37 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.

1月 08 14:24:37 cnski mysqld_safe[5012]: touch: cannot touch ‘/var/log/mariadb/mariadb.log’: Permission denied

1月 08 14:24:37 cnski mysqld_safe[5012]: chmod: cannot access ‘/var/log/mariadb/mariadb.log’: Permission denied

1月 08 14:24:37 cnski mysqld_safe[5012]: 160108 14:24:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

1月 08 14:24:37 cnski mysqld_safe[5012]: /usr/bin/mysqld_safe: line 129: /var/log/mariadb/mariadb.log: Permission denied

1月 08 14:24:37 cnski mysqld_safe[5012]: /usr/bin/mysqld_safe: line 166: /var/log/mariadb/mariadb.log: Permission denied

1月 08 14:24:37 cnski mysqld_safe[5012]: touch: cannot touch ‘/var/log/mariadb/mariadb.log’: Permission denied

1月 08 14:24:37 cnski mysqld_safe[5012]: chown: cannot access ‘/var/log/mariadb/mariadb.log’: Permission denied

1月 08 14:24:37 cnski mysqld_safe[5012]: chmod: cannot access ‘/var/log/mariadb/mariadb.log’: Permission denied

1月 08 14:24:37 cnski systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE


原因:替换Mariadb是未能删除替换my.cnf,

解决:

修改my.cnf

log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


<think>好的,用户现在问的是`systemctl status mysqld`和`systemctl status mysql`的区别。之前他们遇到了查看MySQL日志文件的问题,现在可能是在调试MySQL服务状态遇到了这两个不同的服务名。我需要先回忆一下不同Linux发行版中MySQL服务的名称差异。 首先,用户之前的问题是关于日志文件路径不存在的,现在转向了服务状态检查,可能是在尝试启动或重启MySQL服务遇到了困惑。可能他们在不同的系统上看到过不同的服务名称,比如有的用mysqld,有的用mysql,所以想知道区别在哪里。 接下来,我需要确认不同发行版中的默认服务名称。例如,Debian/Ubuntu通常使用mysql作为服务名,而CentOS/RHEL则使用mysqld。这可能是因为包管理器和命名的历史原因,不同的发行版维护者有不同的命名习惯。此外,MariaDB作为MySQL的分支,可能会有不同的服务名,比如mariadb。 然后,我需要考虑用户可能的情况。他们可能在切换不同系统遇到了服务名不同的问题,导致执行命令出现“未找到服务”的错误。需要解释清楚这取决于他们安装MySQL版本和发行版,以及如何确认正确的服务名。 另外,用户可能想了解如何检查自己的系统使用的是哪个服务名,所以需要给出具体的命令,比如查看systemctl列表或者检查进程。还可能要提到配置文件的位置,因为服务名不同可能配置文件的位置也不同,比如my.cnf的位置差异。 最后,总结两者的区别主要是发行版和包管理导致的命名差异,功能上是一样的。同给出如何查找正确服务名的方法,帮助用户自行确认,避免混淆。</think>在 Linux 系统中,`systemctl status mysqld` 和 `systemctl status mysql` 的区别主要取决于 **操作系统类型** 和 **MySQL/MariaDB安装方式**。以下是详细解释: --- ### **1. 服务名称的由来** - **`mysqld`**: - **传统命名**:`mysqld` 是 MySQL 服务守护进程(daemon)的原始名称,代表 "MySQL Daemon"。 - **常见于**:CentOS、RHEL、Fedora 等基于 Red Hat 的系统中。 - **MariaDB**:如果安装的是 MariaDBMySQL 的分支),服务名通常也是 `mysqld`。 - **`mysql`**: - **简化命名**:部分 Linux 发行版为了简化,将服务名从 `mysqld` 改为 `mysql`。 - **常见于**:Ubuntu、Debian 等基于 Debian 的系统中。 --- ### **2. 实际区别** - **功能无差异**:两者本质上是同一个服务的不同名称,实际操作的守护进程和功能完全相同。 - **依赖发行版**: - 在 CentOS 中,默认使用 `systemctl status mysqld`。 - 在 Ubuntu/Debian 中,默认使用 `systemctl status mysql`。 - **自定义安装**:如果手动编译安装 MySQL,服务名可能由用户自行定义(但一般沿用发行版惯例)。 --- ### **3. 如何确认当前系统的服务名?** - **方法 1:列出所有服务** 通过 `systemctl` 搜索关键词 `mysql` 或 `mysqld`: ```bash systemctl list-unit-files | grep -E 'mysql|mariadb' ``` 输出示例: ```bash mariadb.service enabled mysql.service disabled mysqld.service enabled ``` - **方法 2:查看进程** 直接检查运行的进程: ```bash ps aux | grep -E 'mysql|mariadb' ``` 输出示例: ```bash mysql 1234 ... /usr/sbin/mysqld # 进程名通常是 `mysqld` ``` - **方法 3:检查服务文件路径** 查看服务配置文件的路径: ```bash systemctl status mysql # 观察是否提示 "Unit mysql.service not found" systemctl status mysqld # 观察是否提示 "Unit mysqld.service not found" ``` --- ### **4. 常见场景** - **CentOS/RHEL**: ```bash systemctl start mysqld # 启动服务 systemctl enable mysqld # 设置开机自启 ``` - **Ubuntu/Debian**: ```bash systemctl start mysql # 启动服务 systemctl enable mysql # 设置开机自启 ``` - **MariaDB**: 通常服务名为 `mariadb`(但某些系统仍可能使用 `mysqld`): ```bash systemctl status mariadb ``` --- ### **5. 配置文件关联** - 服务名不同,配置文件路径也可能不同: - **`mysqld`**:配置文件通常为 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`。 - **`mysql`**:配置文件可能位于 `/etc/mysql/mysql.conf.d/mysqld.cnf`(Ubuntu)。 --- ### **总结** | 服务名 | 典型系统 | 备注 | |--------------|------------------------|-------------------------------| | `mysqld` | CentOS, RHEL, Fedora | 传统命名,与进程名一致 | | `mysql` | Ubuntu, Debian | 简化命名,功能相同 | | `mariadb` | 安装 MariaDB 的系统 | MariaDB 的默认服务名 | 如果遇到 `Unit xxx.service not found` 错误,直接尝试另一个名称即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值