OpenEuler中mysql这是在执行 MySQL 密码重置操作时出现的 “找不到mysqld_safe命令” 的错误场景。

问题分析

mysqld_safe 是 MySQL 的辅助启动工具,用于在特殊场景(如跳过权限验证)下启动 MySQL。出现 "找不到命令" 的原因通常是该工具的路径未被系统识别,或 MySQL 安装方式导致其不在默认路径中。

解决建议

  1. 定位mysqld_safe的实际路径执行以下命令查找工具位置:

    bash

    复制代码
    find / -name mysqld_safe 2>/dev/null

    通常路径可能为 /usr/bin/mysqld_safe/usr/sbin/mysqld_safe(根据 MySQL 安装方式不同而变化)。

  2. 使用完整路径执行命令找到路径后,用完整路径启动(以实际路径为例):

    bash

    复制代码
    sudo /usr/bin/mysqld_safe --skip-grant-tables &
  3. 若仍无法找到,改用systemctl方式跳过权限验证

    • 停止 MySQL 服务: bash

      复制代码
      sudo systemctl stop mysqld
    • 编辑 MySQL 配置文件(如/etc/my.cnf),在[mysqld]段添加:

      ini

      复制代码
      skip-grant-tables
    • 启动 MySQL 服务: bash

      复制代码
      sudo systemctl start mysqld
    • 无密码登录 MySQL: bash

      复制代码
      mysql -u root
    • 重置密码后,删除skip-grant-tables配置并重启服务:

      sql

      复制代码
      ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

      bash

      复制代码
      sudo systemctl stop mysqld
      # 编辑配置文件删除skip-grant-tables
      sudo systemctl start mysqld

通过以上步骤,可解决因mysqld_safe命令路径问题导致的密码重置障碍。

以下是针对该问题的进一步解决步骤:

1. 确认 MySQL 版本与密码策略

执行以下命令查看 MySQL 版本和密码验证插件:

sql

复制代码
SELECT VERSION();
SHOW VARIABLES LIKE 'validate_password%';

若版本为 8.0 及以上,密码需满足长度、复杂度要求(如至少 8 位,包含大小写、数字、特殊字符)。

2. 重置密码时指定插件(MySQL 8.0+)

登录后执行:

sql

复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

新密码需符合复杂度要求,如Root@123456

3. 若仍失败,删除匿名用户并刷新权限

执行:

sql

复制代码
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

4. 最终重置方案(彻底重建权限)

  • 停止服务:sudo systemctl stop mysqld

  • 编辑/etc/my.cnf,在[mysqld]下添加:

    ini

    复制代码
    skip-grant-tables
    skip-networking
  • 启动服务:sudo systemctl start mysqld

  • 登录:mysql -u root

  • 执行: sql

    复制代码
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  • 恢复配置(删除skip-grant-tablesskip-networking),重启服务即可。

相关推荐
方二华2 小时前
6 mysql源码中的查询逻辑
数据库·mysql
意疏3 小时前
LibreTV无广告观影实测:聚合全网资源,远程访问家庭影院新方案!
数据库
不见长安在3 小时前
mysql线上主从集群设置
数据库·mysql
tiging3 小时前
mysql 如何让事件执行
数据库·mysql
siriuuus4 小时前
MySQL 数据备份
数据库·mysql·备份
姚远Oracle ACE4 小时前
Oracle AWR 报告中的SQL来自哪儿?
数据库·sql·oracle
熊文豪4 小时前
KingbaseES数据库性能调优工具全面解析
数据库·kingbasees·金仓数据库·电科金仓
冠希陈、4 小时前
PHP7.4.33 安装sqlsrv扩展
数据库
光影34154 小时前
专利撰写与申请核心要点简报
前端·数据库·php