FreeBSD 10.0-RELEASE-p5 amd64上新安装的mariadb-server 5.5.38拒绝启动。
目前拒绝开始这个原因:
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忽略了plugin.frm错误)。
我能find的所有东西都表明host.frm应该先在datadir创build。 显然mysqld理解datadir=./mysql 。 尽pipe/usr/local/etc/my.cnf指定了datadir
[mysqld] datadir=/var/db/mysql
而且我也在命令行上指定了datadir=/var/db/mysql 。
/var/db/mysql是由mysql:mysql拥有的,具有权限750 ,事实certificatemysqld已经愉快地创build了子目录mysql和test 。
如何指定host.frm的path?
我可以手工制作文件吗? (即它是一个文本文件?)
运行mysql_install_db --user mysql --datadir /var/db/mysql失败,并显示相同的错误。
–update:我甚至尝试从/var/db目录启动服务器以避免相对path./mysql ; 但仍然失败。 所以相对path起始点是程序运行的目录以外的东西。
我能find的所有东西都表明host.frm应该先在datadir中创build。
无论什么build议对你是错误的。 系统表是在运行mysql_install_db时创build的。
MariaDB官方文档: 安装系统表(mysql_install_db) 。
为了让mysql_install_db在FreeBSD 10.0-RELEASE-p5 amd64上运行5.5.38,你必须提供:user,datadir和basedir。 mysql_install_db完成后, mysqld将无需帮助即可查找基本目录和数据目录。 例如:
mysql_install_db --user=mysql --basedir=/usr/local --datadir=/var/db/mysql
请注意,这些参数的字符是必需的; 但是如果他们被遗忘,没有错误信息。