在符号 link 之后:错误 2002 (HY000):无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器 (2)

After symbolic link: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

对于 vag运行t 盒子,我创建了一个 bootstrap 脚本,使我的 mysql 数据持久化。 运行 通过具有特权权限的配置程序 shell 脚本。

基本上脚本从 /var/lib/mysql -> /vagrant/mysqldata 创建一个符号 /vag运行t 文件夹已安装到主机系统,因此在创建此符号 link 后,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 进入 vag运行t 并手动启动 mysql,它就可以工作。我不确定这里有什么问题。

正如您在脚本中看到的那样,它将旧的 mysql 数据文件夹重命名为 mysql-old,我将其重新设置后它又可以工作了。所以它与那个 symlink.

有关

正如 Bill Karwin 评论的那样,我将 persistent storage plugin 用于 vagrant,这正是我想要的。