完全停留在新的 mariadb-server 初始化上

完全停留在新的 mariadb-server 初始化上

新安装的mariadb-server5.5.38FreeBSD 10.0-RELEASE-p5 amd64拒绝启动。

目前因以下原因拒绝启动:

140808 14:12:28 [ERROR] mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
140808 14:12:28 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
140808 14:12:28 [Note] Server socket created on IP: '::'.
140808 14:12:28 [ERROR] mysqld: Can't find file: './mysql/host.frm' (errno: 13)
140808 14:12:28 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
140808 14:12:28 mysqld_safe mysqld from pid file /var/db/mysql/milicent.ericx.net.pid ended

当然,mysql_upgrade由于服务器没有运行,引用拒绝运行(所以我plugin.frm暂时忽略这个错误)。

我能找到的所有内容都表明host.frm应该在 中首先创建datadir。显然mysqld明白datadir=./mysql。尽管 指定/usr/local/etc/my.cnfdatadir

[mysqld]
    datadir=/var/db/mysql

datadir=/var/db/mysql也在命令行上指定。

/var/db/mysql归 拥有mysql:mysql并具有权限,这一点已由 愉快地创建了子目录和 的750事实所证实。mysqldmysqltest

host.frm还可以怎样指定路径?

我可以手动制作该文件吗?(例如它是一个文本文件吗?)

运行mysql_install_db --user mysql --datadir /var/db/mysql失败并出现同样的错误。

--更新:我甚至尝试从目录启动服务器/var/db以消除相对路径./mysql;但仍然失败。因此,相对路径的起点不是程序运行的目录。

答案1

我发现的所有内容都表明应该在 datadir 中首先创建 host.frm。

无论你认为什么,这都是完全错误的。系统表是在运行时创建的mysql_install_db

MariaDB官方文档: 安装系统表(mysql_install_db)

答案2

为了mysql_install_db在 5.5.38 上运行,FreeBSD 10.0-RELEASE-p5 amd64您必须提供:user、datadir 和 basedir。mysql_install_db完成后,mysqld无需任何帮助即可找到基础目录和数据目录。例如:

mysql_install_db  --user=mysql --basedir=/usr/local --datadir=/var/db/mysql

还请注意,=参数的字符是必需的;但如果忘记了,则不会有错误消息。

相关内容