分类: Linux

  • MySQL 8.4 忘记root密码怎么办

    MySQL 8.4 忘记root密码怎么办

    一次真实的排错记录:从各种报错到最终解决,涵盖 MySQL 8.0 与旧版本的核心差异

    前言

    如果你还在使用 UPDATE user SET password=PASSWORD('123456')... 这种老掉牙的命令来修改 MySQL 8.0 的密码,那这篇文章就是为你准备的。

    本文记录了我在 MySQL 8.4.8 上忘记密码后的完整排错过程,遇到的每一个错误都有对应的解决方案。

    环境说明

    • MySQL 版本:8.4.8 (Linux/Ubuntu)
    • 操作系统:Ubuntu 24.04+
    • 问题:root 密码遗忘,且错误地配置了 mysql_native_password 插件

    常见错误速查表

    错误信息原因解决方案
    ERROR 1064...syntax...PASSWORD('123456')MySQL 8 已移除 PASSWORD() 函数使用 ALTER USER 语法
    ERROR 1396 (HY000): Operation ALTER USER failed--skip-grant-tables 模式下未刷新权限先执行 FLUSH PRIVILEGES;
    ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded用户被错误配置为使用未加载的认证插件修改 plugin 为 caching_sha2_password
    ERROR 1819 (HY000): Your password does not satisfy...密码强度不符合 MySQL 8 的策略使用强密码或临时调低策略

    完整解决步骤

    第一步:停止 MySQL 服务

    sudo systemctl stop mysql

    第二步:以跳过权限表模式启动

    找到你的mysqld配置文件 一般在/etc/mysql/下面
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    
    # mysqld.conf
    [mysqld]
    skip-grant-tables 
    
    # 启动服务
    sudo systemctl start mysql

    第三步:免密码登录

    # 输入任意密码
    mysql -uroot -p

    第四步:修复用户认证插件并清空密码

    -- 必须最先执行,否则无法修改用户表
    FLUSH PRIVILEGES;
    
    -- 查看当前 root 用户状态
    SELECT User, Host, plugin, authentication_string FROM mysql.user WHERE User='root';
    -- 我这里错误的修改了插件所以需要这样执行
    -- 修复:将 plugin 改为 MySQL 8 默认的 caching_sha2_password,并清空密码
    UPDATE mysql.user SET plugin='caching_sha2_password', authentication_string='' WHERE User='root';
    
    -- 一般执行
    UPDATE mysql.user SET authentication_string='' WHERE User='root'
    
    -- 再次刷新权限
    FLUSH PRIVILEGES;
    
    -- 退出
    EXIT;

    第五步:正常重启 MySQL

    sudo systemctl start mysql

    第六步:用空密码登录并设置新密码

    mysql -uroot -p
    -- 设置新密码(MySQL 8 会自动使用 caching_sha2_password)
    -- 注意你的root的host是不是`localhost`我的是`%`
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
    
    -- 刷新权限
    FLUSH PRIVILEGES;
    
    -- 退出
    EXIT;

    第七步:还原配置文件并登录

    # 去掉skip-grant-tables后
    sudo systemctl restart mysql
    
    mysql -uroot -p
  • 服务器重启后PM2里进程丢失?

    服务器重启后PM2里进程丢失?

    服务器重启后,发现PM2 ls 命令中的进程全部丢失,怎么保证以后重启不丢失呢?

    • 使用pm2 start启动您的应用程序
    • 设置开机启动pm2,注意,会返回一段命令需要手动执行
    • 执行上个步骤返回的命令
    • 使用save保存您当前的进程列表
    • 验证结果
    # 1.使用pm2 start启动您的应用程序
    pm2 start
    # 2. 设置开机启动pm2,注意,会返回一段命令需要手动执行
    pm2 startup
    # 3. 返回的大概长这样 sudo env PATH=$PATH:/www/server/nodejs/vxx/bin
    # /www/server/nodejs/vxx/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu  执行它
    # 4. 使用save保存您当前的进程列表
    pm2 save

    重启服务器后 使用pm2 ls命令查看是否恢复了您的进程。

    启动应用并设置startup
    保存进程 重启服务器测试一下

  • Akamai成为Linux内核基础架构合作伙伴

    Akamai成为Linux内核基础架构合作伙伴

    2025年4月22日,全球云服务提供商Akamai宣布其现已成为 Linux 内核开发工作的新基础架构合作伙伴。Akamai 将通过其云计算服务和内容交付网络 (CDN) 为 kernel.org 提供支持。

    赋能开发者共同体的可持续发展

    Akamai 与 Linux Kernel Organization 签订了一项多年合作协议,未来将为 Linux 项目及其背后的开发者网络提供基础设施支持。Linux 的开发者中有许多都是志愿者,他们的持续贡献对于保障系统安全性、性能和可用性至关重要。如今,全球政府、科研机构、非营利组织以及企业广泛使用 Linux 系统,涵盖从智能手机、工业设备到云数据中心和金融交易平台等多个关键领域。

    Linux 内核庞大而复杂,目前代码量已超过 2800 万行。自 2005 年以来,来自超过 1300 家企业的 13,500 多名开发者为其做出贡献。开发者们不断迭代内核代码,并将其分发给构建各种 Linux 发行版的技术团队。Akamai 提供的基础架构服务将确保他们能够安全、高效地访问这些源代码。

    开源共生:从技术反哺到生态繁荣

    Akamai Cloud 首席架构师兼 CNCF 技术监督委员会成员 Alex Chircop 表示:“Akamai 的平台本身就建立在 Linux 和开源技术之上。我们为 kernel.org 提供支持,是对社区的回馈,也延续了我们对 CNCF 的承诺。这正是 Linode 中 ‘Lin’ 的来源——对 Linux 的致敬。”

    Akamai 的开源承诺不仅止步于 Linux。CNCF 首席技术官 Chris Aniszczyk 表示:“Akamai 是开源社区的重要一员。无论是对 OpenTelemetry、Argo和Prometheus 等关键项目的贡献,还是向 CNCF 项目捐赠 100 万美元的基础设施额度,都体现了他们对开源人才和项目的坚定支持。”

    作为 CNCF 的金牌会员以及 KubeCon 的白金赞助商,Akamai在 2022 年收购了 Linux 云服务先锋 Linode,随后于 2023 年又将 Kubernetes 原生存储平台 Ondat 收入麾下,进一步扩展了其开源与云原生的实力。目前,Akamai 旗下的 Linode Kubernetes Engine 已获得 CNCF 的 Kubernetes 一致性认证,是一款全面托管的容器编排平台,致力于简化云原生应用的部署与管理。

    作为对其开源支持承诺的一部分,Akamai 还宣布将为备受欢迎的Linux 发行版之一 Alpine Linux 提供基础架构与交付支持。

    通过为Linux内核及Alpine Linux提供基础设施支持,Akamai正在帮助全球开发者更高效地协调合作。这种基于实际技术能力的回馈方式,不仅提升了开源协作效率,更展现了商业公司与开源社区协同发展的可持续模式。未来,Akamai依然会持续地回馈开源社区,助力开源生态繁荣发展。