我可以在双启动时与 Windows 共享 MySql 数据库文件吗?

maa*_*nus 13 mysql dual-boot database

我想在 Ubuntu 和 Windows(双启动)中使用驻留在 NTFS 分区上的 MySql 数据库文件。它会起作用吗?有什么问题吗?

Rin*_*ind 9

是的,它有效,但有一些怪癖。MySQL 跨平台使用相同的文件格式,因此您只需要共享数据目录。一个问题是数据目录需要有mysql作为ubuntu中的所有者和组。Windows 不区分大小写,Linux 区分大小写,因此请保持所有名称统一:全名小写或大写,但不要混合使用。

从开始到结束; 如果您已经设置好了,这可能需要进行一些调整以适合您的设置:

  • 在两个系统上安装和设置 MySQL。
  • 如果 mysql 服务器正在运行,请停止它。
  • 创建一个新的 NTFS 分区。标记设备名称(让我们暂时调用它sdXN)。
  • 将 mysql 数据目录从 Ubuntu 移动到新分区。

    mkdir /{mountpoint}/mysql_data
    sudo mv /var/lib/mysql /{mountpoint/mysql_data
    
    Run Code Online (Sandbox Code Playgroud)

    使用mv保存权限。

  • 新建一个mysql目录

    sudo mkdir /var/lib/mysql
    
    Run Code Online (Sandbox Code Playgroud)
  • 将 NTFS 分区挂载到/var/lib/mysql. 将设备名称更改为创建 NTFS 分区时的名称。

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
    Run Code Online (Sandbox Code Playgroud)
  • 要在启动时自动挂载,请找到分区 UUID 和语言环境并编辑/etc/fstab.

    ls -l /dev/disk/by-uuid
    locale -a
    sudo gedit /etc/fstab   
    UUID={number_found_with_the_ls-l} /var/lib/mysql ntfs-3g uid=mysql,gid=mysql,umask=0077,locale={your_locale}.utf8  0  0
    
    Run Code Online (Sandbox Code Playgroud)
  • 将“datadir”路径更改/etc/mysql/my.cnf为指向/var/lib/mysql/mysql_data

  • 启动mysql服务器并进行测试。

  • 编辑 Windows 配置文件 ( my.ini) 并将“datadir”设置为X:/mysql_data(替换X:在 Windows 下安装它的位置)。

UF.org 上的主题 1442148编译。

我让 Ubuntu 版本正常工作;所以部分未经测试,因为我没有 Windows