30

MySQL 5.1.54 Ubuntu 11.04

我正在尝试将 my.conf 中的 bin 日志目录更改为:

[mysqld]
log_bin=/home/developer/logs/mysql/mysql-bin.log

在此更改后,MySQL 服务器无法启动并出现错误:

/usr/sbin/mysqld: File '/home/developer/logs/mysql/mysql-bin.index' 
not found (Errcode: 13)
111005 12:47:58 [ERROR] Aborting

目录 /home/developer/logs/mysql/ 的权限是 0777

这是怎么回事?

4

13 回答 13

33

像往常一样,解决方案很简单但并不明显:它需要编辑我刚刚添加到/etc/apparmor.d/usr.sbin.mysqld的 apparmor 设置一个新的字符串,其中包含目标目录的路径:/home/developer/logs/*读写

有用!

于 2011-10-06T06:43:23.587 回答
26

/usr/sbin/mysqld:找不到文件“/usr/binlogs/mysql-bin.index”(错误代码:13)

它对我有用:

chown -R mysql:mysql /usr/binlogs/

于 2013-06-02T19:02:45.827 回答
14

就像对于遇到类似问题的任何人的参考一样,解决方案基本相同,但问题的原因并不明显。

升级Debian wheezy后,mysql无法启动。

不知何故,我不知道如何,某些文件的权限/var/lib/mysql不属于 mysql 用户,从而阻止服务器启动。

一个chown -R mysql.mysql /var/lib/mysql固定它。

我没有做任何事情来搞乱mysql,这是一个标准:

apt-get update

apt-get upgrade

在 Debian 升级过程中出现了一些问题,需要手动干预。

于 2014-02-17T03:45:18.593 回答
4

选项1:

  1. service mysqld stop

  2. 将包括 .index 文件在内的日志文件复制到新位置。

     cp mysql-bin.log* /path/to/binlogs
     cp mysql-bin.index /path/to/binlogs
    
  3. /etc/my.cnf文件中进行更改。

    [mysqld]
    log-bin=/path/to/newdirecory/mysql-bin
    
    log-bin-index=/path/to/newdirectory/mysql-bin.index
    
  4. service mysqld start

选项 2:

使用此实用程序重新定位二进制日志:

mysqlbinlogmove --binlog-dir=/server/data /new/binlog_dir
于 2015-09-18T09:13:27.403 回答
3

Selinux 可能会强制执行 MySQL 数据库文件必须位于 /var/lib/mysql 而不是其他任何地方的规则。如果您将 mysql 移动到另一个目录,请尝试关闭 selinux(内核引导命令行上的 selinux=0)。

于 2013-01-04T06:38:06.360 回答
2

您需要按如下方式授予用户对该目录的权限:

chown -R mysql:mysql /home/developer/logs/mysql/
于 2016-05-12T07:00:59.637 回答
1

您的用户是否有权访问所有上层目录?特别是 /home/developer/ 目录?尝试使用 mysql 服务器帐户登录并触摸日志文件。

于 2011-10-05T11:22:10.477 回答
1

mysqld:找不到文件'/data/log/mysql/mysql-bin.index'(错误代码:2 - 没有这样的文件或目录)

我真的陷入了我的 MySQL Master - Slave 设置的中间。最后上面是权限问题,添加以下命令解决了我的问题。

chown -R mysql:mysql /data/log/mysql/

于 2018-09-24T13:50:11.413 回答
0

当我在全新安装期间尝试更改datadir变量时遇到了类似的问题。在我的情况下,解决方案是在第一次启动时禁用 log-bin。之后,我能够使用新路径再次启用它......

于 2011-10-05T11:40:42.393 回答
0

你的配置错误:

log_bin=/home/developer/logs/mysql/mysql-bin.log

你会改用

log-bin=/home/developer/logs/mysql/mysql-bin.log
于 2016-06-25T03:23:51.160 回答
0

在“my.cnf”文件中的复制配置需要提及

server-id=1 log_bin=/var/log/mysql/mysql-bin.log

您可以创建自己的目录并授予权限。在 /var/log/ 中创建目录“mysql”

chmod 777 mysql

这适用于 MySQL 5.7 版

于 2016-07-16T13:07:15.037 回答
0

您还可以注释my.cnf文件中定义日志位置的行,因此 mysql 将考虑其默认路径并正确启动。

log-bin = /var/log/mysql/mysql-bin.log-> #log-bin = /var/log/mysql/mysql-bin.log

如果您不太关心日志,这将很有帮助。

于 2016-11-30T07:05:02.107 回答
0

正如 mysql 中的文档所说https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_log_bin

至少在 5.7 版中,变量是 log_bin 而不是 log-bin

于 2019-04-11T15:00:37.120 回答