我已经安装了 MariaDB,并将 datadir 更改为 /tank/mysql,并且一切正常。
之后我必须重新安装 MariaDB,并且我正在使用:
apt -y remove --purge mariadb-server
apt -y install mariadb-server
一切顺利。
现在的问题是 datadir 没有改变。
我更改的文件与之前相同:/etc/mysql/mariadb.conf.d/60-mariadb.cnf
代码:
[mysqld]
datadir=/tank/mysql
MariaDB 指向 /var/lib/mysql
我知道最好的解决方案是重新安装整个 ubuntu 服务器,但现在这不是一个选择。
如果我可以写其他内容来改进我的问题,请提出建议。
/etc/mysql 文件夹中没有包含“/var/lib/mysql”的文件。
我在其他服务器上重新安装后也遇到了这个问题,并且无法解决,所以最后我重新安装了整个服务器。
信息:
操作系统:Ubuntu 服务器 16.04
MariaDB 版本:10.2.15
答案1
在 Debian 9 上,我通过运行以下命令解决了这个问题:
mysql_install_db --datadir=YOURDATADIR
然后改变datadir
选项
/etc/mysql/mariadb.conf.d/50-server.cnf
(或任何包含datadir
选项的文件)根据上面的 YOURDATADIR 并重新启动mariadb.service
答案2
恭喜@CroisOS!
对于那些遇到类似问题的人,以下是我所做的。值得检查一下,因为这可能是你所处的情况。
首先,您应该查找是否有其他文件包含该datadir
指令(这只是一个示例)。运行grep -R datadir /etc/mysql/
。
我也曾经遇到过这样的问题,因为systemctl stop|restart mysqld.service
无法工作(服务根本没有停止或重新启动)。解决方案是mysqladmin shutdown
。确保服务不再运行(ps faux | grep mysqld
)。然后使用重新启动服务systemctl
。
在 mariadb 控制台检查该指令对应的全局变量,以确保更改生效。
答案3
最后我终于解决了。
注意:这是仅适用于重新安装 MariaDB 后更改 datadir 的解决方案,如果最初安装了 MariaDB,则应该通过在 cnf 文件中正常更改 datadir 来实现。
# that failed
apt -y remove --purge mariadb-server
apt -y remove --purge mariadb-server-10.2
apt -y autoremove
rm -fr /etc/mysql/
rm -fr /var/lib/mysql
rm /usr/bin/mysql
reboot
# in this moment datadir is /var/lib/mysql
apt -y install mariadb-server
/etc/init.d/mysql stop
cp -R /var/lib/mysql/ /tank/mysql/
cd /tank/mysql/
rm ibdata1
rm ib_*
答案4
/etc/mysql 文件夹中没有包含“/var/lib/mysql”的文件。
/var/lib/mysql 很可能是在 datadir 未另行定义的情况下默认编译使用的。
您应该调查.cnf 文件的级联,并确保 /etc/mysql/mariadb.conf.d/60-mariadb.cnf 文件确实包含在内。
运行命令mysql --help
并查找类似以下行
默认选项按给定顺序从以下文件读取:/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
查找每个文件并检查是否存在,然后包含 /etc/mysql/mariadb.conf.d/*.cnf
或类似内容。如果缺少,则应添加它。