记一次 Vagrant 环境下更换 MySQL 数据目录 datadir 的坑

平时用vagrant开发,无奈磁盘只给分配了10g空间,数据库文件越来越大导致mysql挂掉,想到将datadir放到共享目录,这样就不占用空间,说干就干。

正常更换目录的操作。

  1. 查看数据目录
    mysql> select @@datadir;
    +------------------+
    | @@datadir        |
    +------------------+
    | /data/mysqldata/ |
    +------------------+
  2. 复制目录,并更改目录的用户组
    $ sudo cp -r /data/mysqldata/ /new_folder/
    $ sudo chown -R mysql:mysql /new_folder/
  3. 停止mysql,修改my.cnf并启动mysql
    $ sudo service mysqld stop
    $ sudo vim /etc/my.cnf     #并不一定在这个位置,可以find / -name my.cnf查找
    $ ...datadir=/new_folder
    $ sudo service mysqld start
  4. 按照上面的操作应该能成功,但是在vagrant下有个问题,如果new_folder在vagrant共享目录,那么这个目录的用户组为vagrant:vagrant,chown也无效,所以导致更改正确但还是不能启动的问题,下面是解决办法。

vagrant环境下的操作。

在Vagrantfile中添加两行配置,参考了社区兄弟的文章传送门下面的回复才解决的。

config.vm.synced_folder "/path/mysqldata", "/data/mysqldata", owner: "mysql", group: "mysql"
config.vm.provision "shell", inline: "sudo service mysql start"

然后启动虚拟机环境的时候,vagrant up --provision就可以了。

原文链接: https://www.phpbest.cn/posts/18.html
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!