/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)

本文记录了一次MySQL服务启动失败的情况,错误信息显示无法找到文件'./mysql/plugin.frm',并提示运行mysql_upgrade来创建mysql插件表。此外,还遇到了InnoDB文件操作权限问题,具体表现为无法打开文件'./ibdata1'。
[root@localhost ~]# /etc/init.d/mysqld start
MySQL Daemon failed to start.
正在启动 mysqld:                                          [失败]
[root@localhost ~]# cat /var/log/mysqld.log
180107 21:35:19 mysqld_safe Starting mysqld daemon with databases from /var/lib/                                          mysql
180107 21:35:19 [Warning] '--default-character-set' is deprecated and will be re                                          moved in a future release. Please use '--character-set-server' instead.
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
180107 21:35:19 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgr                                          ade to create it.
180107 21:35:19  InnoDB: Initializing buffer pool, size = 8.0M
180107 21:35:19  InnoDB: Completed initialization of buffer pool
180107 21:35:19  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
180107 21:35:19 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ende                                          d
180107 21:35:40 mysqld_safe Starting mysqld daemon with databases from /var/lib/                                          mysql
180107 21:35:40 [Warning] '--default-character-set' is deprecated and will be re                                          moved in a future release. Please use '--character-set-server' instead.
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
180107 21:35:40 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgr                                          ade to create it.
180107 21:35:40  InnoDB: Initializing buffer pool, size = 8.0M
180107 21:35:40  InnoDB: Completed initialization of buffer pool
180107 21:35:40  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
180107 21:35:40 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ende                                          d
180107 21:37:46 mysqld_safe Starting mysqld daemon with databases from /var/lib/                                          mysql
180107 21:37:46 [Warning] '--default-character-set' is deprecated and will be re                                          moved in a future release. Please use '--character-set-server' instead.
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
180107 21:37:46 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgr                                          ade to create it.
180107 21:37:46  InnoDB: Initializing buffer pool, size = 8.0M
180107 21:37:46  InnoDB: Completed initialization of buffer pool
180107 21:37:46  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
180107 21:37:46 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ende                                          d

<think>我们正在解决MySQL启动时报错:'/usr/sbin/mysqld:Nosuchfileordirectory'这个错误表明系统找不到mysqld可执行文件。可能的原因包括:1.MySQL未正确安装2.MySQL安装目录不在PATH中3.符号链接丢失或损坏4.安装过程中断导致文件缺失参考之前的引用,虽然引用的内容不直接相关,但我们可以借鉴一些思路:引用[2]提到使用systemctl启动mysqld服务失败,并建议查看状态和日志,这个思路同样适用。引用[3]中提到了使用mysqldump进行备份,暗示我们可能已经安装了MySQL,但可能路径配置问题。具体解决步骤:步骤1:确认MySQL是否安装执行命令:dpkg-l|grepmysql-server(Debian/Ubuntu)或rpm-qa|grepmysql-server(CentOS/RHEL)步骤2:如果未安装,则安装MySQLUbuntu/Debian:sudoaptupdatesudoaptinstallmysql-serverCentOS/RHEL:sudoyuminstallmysql-server步骤3:如果已安装,检查文件是否存在执行:ls-l/usr/sbin/mysqld如果存在,可能是权限问题;如果不存在,可能是安装不完整。步骤4:重新安装MySQL(如果文件缺失)先卸载:sudoaptremove--purgemysql-servermysql-clientmysql-common(Ubuntu/Debian)或sudoyumremovemysql-server(CentOS/RHEL)然后重新安装。步骤5:检查符号链接(如果文件存在)whichmysqld查看路径如果不在/usr/sbin/,可以考虑创建符号链接(假设实际路径为/usr/local/mysql/bin/mysqld):sudoln-s/usr/local/mysql/bin/mysqld/usr/sbin/mysqld步骤6:检查PATH环境变量确保/usr/sbin在PATH中:echo$PATH如果不在,可以将其加入~/.bashrc或/etc/profile中,然后source使其生效。步骤7:检查systemd服务文件(如果使用systemctl)服务文件通常在:/lib/systemd/system/mysql.service或/etc/systemd/system/mysql.service查看其中的ExecStart行,确保指向正确的mysqld路径。例如,打开服务文件:sudonano/lib/systemd/system/mysql.service找到类似行:ExecStart=/usr/sbin/mysqld...如果路径不正确,修改为实际路径,然后执行:sudosystemctldaemon-reload步骤8:启动服务并检查状态sudosystemctlstartmysqlsudosystemctlstatusmysql如果以上步骤都不能解决,可能需要查看错误日志:通常位于:/var/log/mysql/error.log或/var/log/mysqld.log生成相关问题:1.如何查看MySQL的安装路径?2.如何配置MySQL的系统服务文件?3.如何设置Linux的环境变量PATH?4.如何重新安装MySQL而不丢失数据?5.如何从二进制包安装MySQL?注意:在重新安装前,请确保备份数据,如引用[3]所示。</think> ### 解决MySQL启动错误 `/usr/sbin/mysqld: No such file or directory` 此错误表明系统找不到MySQL的核心可执行文件。以下是逐步解决方案: --- #### **1. 验证MySQL是否安装** ```bash # 检查安装状态(选择适合您系统的命令) dpkg -l | grep mysql-server # Debian/Ubuntu rpm -qa | grep mysql-server # CentOS/RHEL ``` - ✅ **已安装**:跳到步骤2 - ❌ **未安装**:执行安装 ```bash sudo apt install mysql-server # Debian/Ubuntu sudo yum install mysql-server # CentOS/RHEL ``` --- #### **2. 定位mysqld执行路径** ```bash # 搜索可能的安装位置 sudo find / -name mysqld 2>/dev/null ``` 🔍 常见路径: - `/usr/bin/mysqld` (常见于新版本) - `/usr/local/mysql/bin/mysqld` (源码编译安装) - `/opt/mysql/bin/mysqld` (自定义安装) --- #### **3. 修复路径映射** 若文件存在但不在此路径: ```bash # 创建符号链接(假设实际路径为/usr/bin/mysqld) sudo ln -s /usr/bin/mysqld /usr/sbin/mysqld ``` --- #### **4. 检查systemd服务配置** ```bash sudo nano /etc/systemd/system/mysql.service # 或mariadb.service ``` 验证关键配置项: ```ini [Service] ExecStart=/usr/bin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid ``` 📌 将`/usr/sbin/mysqld`修正为步骤2中找到的实际路径 --- #### **5. 重新加载服务配置** ```bash sudo systemctl daemon-reload sudo systemctl restart mysql sudo systemctl status mysql # 验证状态 ``` --- #### **6. 备份后重装(终极方案)** 如果文件确实缺失[^3]: ```bash # 备份数据 sudo mysqldump -u root -p --all-databases > full_backup.sql # 卸载并重装 sudo apt purge mysql-server mysql-client # Ubuntu sudo yum remove mysql-server # CentOS sudo rm -rf /var/lib/mysql # 删除残留数据 # 重新安装 sudo apt install mysql-server # 或 sudo yum install ``` --- ### 📌 相关问题 1. 如何确认MySQL的正确安装路径? 2. 源码编译安装MySQL后如何配置systemd服务? 3. MySQL启动时 `Unit mysql.service not found` 错误如何解决? 4. 卸载MySQL后为何需要手动删除 `/var/lib/mysql`? 5. 不同Linux发行版的MySQL服务管理有何差异? > **提示**:引用[2]中提到的查看日志命令 `journalctl -xe` 对诊断此类问题很有帮助。始终在关键操作前备份数据,如引用[3]所示[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值