Vagrant执行up --provision时无法设置MariaDB root用户密码报错求解
问题根因
从报错日志可以明确故障根源:MariaDB安装完成后执行post-installation初始化脚本时失败,/var/lib/mysql/mysql/系统库目录缺失,导致服务启动必备的mysql.user、mysql.servers等系统表不存在,服务启动失败触发dpkg配置报错。该故障和网络/VPN状态无关,切换VPN无法解决问题。
解决方案
方案1:重置Vagrant环境(推荐,操作最简单)
如果虚拟机内没有需要保留的自定义数据,直接在宿主机执行以下命令重建干净环境即可:
# 销毁现有故障虚拟机 vagrant destroy -f # 重新启动并执行配置流程 vagrant up --provision
该类故障大多由之前provision中途中断、虚拟机异常关机导致的临时文件残留引发,重建环境可以直接解决90%以上的同类问题。
方案2:手动修复现有虚拟机
如果不想销毁现有虚拟机内的已有数据,按以下步骤操作:
- 先强制中断当前配置流程,通过SSH进入虚拟机:
vagrant ssh - 卸载残留的MariaDB/MySQL相关安装包,清理残余数据和配置:
# 停止所有残留的MariaDB进程 sudo systemctl stop mariadb.service 2>/dev/null sudo killall mysqld 2>/dev/null # 完全卸载MariaDB和MySQL相关安装包 sudo apt purge -y mariadb-* mysql-* # 清理残留的数据库数据、配置、日志 sudo rm -rf /var/lib/mysql /etc/mysql /var/log/mysql* # 修复dpkg异常状态 sudo dpkg --configure -a sudo apt autoremove -y sudo apt autoclean - 退出虚拟机SSH会话,回到宿主机重新执行配置流程:
vagrant up --provision
内容的提问来源于stack exchange,提问作者Gias ul Hassan
相关产品推荐
相关产品推荐

