这是 CentOS 8.1 和 MariaDB 10.3 数据库服务器。
我按照在几个地方看到的指示将数据目录从默认的 /var/lib/mysql 重新定位到 /home/mysql。/home 是 RAID。
我已经在 /etc/my.cnf 中进行了更改,将其放在 !include 内容之前,但它似乎仍然指向 /var/lib/mysql。
当我完成此操作后,mysql 会抱怨并且它不会让我运行 mysql 命令。
我查看了 /etc/my.cnf.d 并发现默认值仍然存在于 mariadb-server.cnf 中。
我在日志中看到了这条消息,但不确定这是否相关?
Mar 11 11:58:44 myserver systemd[1]: Starting MariaDB 10.3 database server...
Mar 11 11:58:44 myserver mysql-prepare-db-dir[6349]: **Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.**
Mar 11 11:58:44 myserver mysql-prepare-db-dir[6349]: **If this is not the case, make sure the /var/lib/mysql is empty before running mysql-prepare-db-dir.**
我尝试运行 mysql-prepare-db-dir,但日志中出现了相同的消息。
答案1
确保你放入datadir
了 [mysqld] 部分,并且要注意,当加载配置时,LAST 语句会胜出,而不是第一个语句,因为你似乎通过将它放在 !includes 之前来暗示这一点。在你的 MySQL 配置中执行 forgrep -R
并datadir
检查它在哪里设置(如果有的话)。
但实际上,你的做法是错误的。更好的做法是mount --bind /home/mysql /var/lib/mysql
。并确保你restorecon -rv /var/lib/mysql
正确设置了 SELinux 标签。