对于一个无聊的盒子,我创建了一个引导脚本,使我的mysql数据持久化。它通过具有特权的预配器外壳脚本运行。

基本上,脚本从/ var / lib / mysql-> / vagrant / 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变成无业游民并手动启动mysql,则它可以工作。我不确定这里是什么问题。

正如您在脚本中看到的那样,它将旧的mysql数据文件夹重命名为mysql-old,我将其设置为可以再次使用。因此,它与该符号链接有关。

最佳答案

正如Bill Karwin所说,我使用persistent storage plugin来做无所适从的事情。

关于mysql - 符号链接(symbolic link)后:ERROR 2002(HY000):无法通过套接字'/tmp/mysql.sock'(2)连接到本地MySQL服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48891487/

10-11 02:58
查看更多