新安装的mariadb-server
5.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.cnf
了datadir
:
[mysqld]
datadir=/var/db/mysql
我datadir=/var/db/mysql
也在命令行上指定。
/var/db/mysql
归 拥有mysql:mysql
并具有权限,这一点已由 愉快地创建了子目录和 的750
事实所证实。mysqld
mysql
test
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
还请注意,=
参数的字符是必需的;但如果忘记了,则不会有错误消息。