You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arch Linux首次安装MySQL报ERROR 1045(28000)访问被拒求助

Arch Linux首次安装MySQL报ERROR 1045 (28000) 无密码访问被拒修复方案

Arch Linux的MySQL/MariaDB包不会在安装阶段自动完成数据目录初始化,网上大部分面向Debian/Ubuntu系的修复方案不适配Arch的包配置,反复试错后残留的错误数据会导致安装流程一直要求输入未知的root密码,最终触发无密码访问被拒报错,按以下步骤操作即可修复:

  • 先彻底清理错误操作残留
    停掉所有正在运行的MySQL相关服务:
    sudo systemctl stop mysqld mariadb 2>/dev/null
    首次安装无存量业务数据的前提下,清空错误生成的数据目录:
    sudo rm -rf /var/lib/mysql/*
  • 手动执行数据库初始化
    Arch下必须手动跑初始化命令生成系统库,这步是绝大多数教程漏提的关键:
    sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
    如果你装的是Oracle官方MySQL包,把上面的初始化命令替换成:
    sudo mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql
  • 临时跳过权限校验重置root密码
    不要改my.cnf加skip-grant-tables参数,容易忘删留安全隐患,直接临时启动无校验的后台进程:
    sudo mysqld --skip-grant-tables --skip-networking --user=mysql &
    等2秒等进程启动完成,直接无密码连接数据库:
    mysql -u root
    进入MySQL交互行后依次执行以下命令,重置密码并修正认证插件(Arch默认的auth_socket插件会导致密码登录异常):
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你要设置的root密码';
    FLUSH PRIVILEGES;
    exit;
    
    杀掉临时启动的无校验进程:
    sudo pkill mysqld
  • 正常启动服务验证
    启动systemd托管的正式服务,同时设置开机自启:
    sudo systemctl enable --now mysqld
    用刚才设置的密码登录验证:
    mysql -u root -p
  • 注意事项
    • 不要照搬Debian系教程去/var/log/mysqld.log找临时密码,Arch不会自动生成这个临时密码文件
    • 全程操作不要手动改/var/lib/mysql目录的权限,初始化命令会自动修正权限,手动chown反而会导致服务启动失败
    • 如果装的是MariaDB,把所有命令里的mysqld替换成mariadbd即可,操作逻辑完全一致

内容的提问来源于stack exchange,提问作者John Domeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:54:20