启动到 Linux Mint 20,我刚刚在这台机器上安装了 LAMP 堆栈,接受所有默认选择。但我已经将所有数据库存储在 Windows 10 位锁定分区上(现已解锁并可在 Linux 中访问)。
关于在 Linux 中移动 mysql 数据文件位置的问题,我发现这个答案...这看起来合乎逻辑(注意 Edenshaw 的评论:“我在您的位置找不到文件 my.cnf,而是在这里:/etc/mysql/mysql.conf.d/mysqld.cnf”)。
我的 mysql 安装在我的位锁定 Windows 驱动器上,位于 /media/bitlockermount-d/dbases/mariadb_data 下:在此下您可以找到 ibdata1、ib_logfile[n] 等。是的,它是 MariaDB 安装。
按照链接答案的说明进行操作后,我得到了
root@M17A:/var/lib/mysql# service mysql start
Job for mysql.service failed because the control process exited with error code.
进而
root@M17A:/var/lib/mysql# systemctl status mysql.service
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2022-01-02 13:23:39 GMT; 1min 19s ago
Process: 335723 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Process: 335731 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
Main PID: 335731 (code=exited, status=1/FAILURE)
Status: "Server startup in progress"
Error: 13 (Permission denied) ********** AHA... **********
这是合乎逻辑的,因为我发现 /media/bitlockermount-d/dbases/mariadb_data 下的文件所有权没有改变:它仍然是 root:root,而它应该通过以下命令更改为 mysql:mysql:
root@M17A:/var/lib/mysql# chown --reference=/var/lib/mysql /media/bitlockermount-d/dbases/mariadb_data
root@M17A:/var/lib/mysql# chmod --reference=/var/lib/mysql /media/bitlockermount-d/dbases/mariadb_data
...这无疑是事情失败的至少原因之一。然而,这有点令人费解,因为全部...dbases/mariadb_data 下的文件是 777(或者说是)。那么为什么 mysql 不能对这些文件做它想做的事情呢?是否可能明确检查所有权作为其启动过程的一部分?
我试图找到位锁解锁分区的格式。我无法做到这一点,但假设它是 ntfs 或类似的非 Linux 类型,从而解释了无法更改所有权的原因。
那么问题来了:有什么办法可以解决这个问题吗?例如,有什么方法可以告诉 mysql 以某种方式“以 root 身份运行”或“忽略所有权问题”?