对于一个流浪盒我创建了一个使我的mysql数据持久的引导脚本。它运行具有特权的配置shell脚本。
基本上,脚本从/ var / lib / mysql创建符号 - > /流浪者/ mysqldata / vagrant文件夹已安装到主机系统,因此在创建此符号链接后,mysql中的所有数据都会重新出现
if [ ! -L /var/lib/mysql ] ; then
sudo service mysql stop
sudo mv /var/lib/mysql /var/lib/mysql-old
sudo ln -s /vagrant/mysqldata /var/lib/mysql
sudo echo "alias /var/lib/mysql/ -> /vagrant/mysqldata/," >> /etc/apparmor.d/tunables/alias
sudo service apparmor reload
sudo service mysql start
fi
问题是,在我运行此脚本之后,我运行vagrant reload --provision
它总是失败并显示错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
然而,如果我ssh到vagrant并手动启动mysql,它的工作原理。我不确定这里的问题是什么。
正如您在脚本中看到的那样,它将旧的mysql数据文件夹重命名为mysql-old,我将其设置回来再次运行。所以它与该符号链接有关。