【问题标题】:try to change bin log directory: mysql-bin.index not found (Errcode: 13)尝试更改 bin 日志目录:找不到 mysql-bin.index (Errcode: 13)
【发布时间】:2011-12-01 09:41:39
【问题描述】:

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

发生了什么事?

【问题讨论】:

    标签: mysql logging bin


    【解决方案1】:

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

    有效!

    【讨论】:

    • apparmor.d 在我的服务器中不可用。
    • 请注意,任何人都可以做到这一点。如果您希望 apparmor 路径也包含路径中的所有子文件夹,请使用两颗星 **,例如(不带引号):“/home/developer/logs/** rw,
    • 之后别忘了service apparmor restart
    【解决方案2】:

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

    它对我有用:

    chown -R mysql:mysql /usr/binlogs/

    【讨论】:

    • 这是意外删除mysql bin日志后最明显的解决方案。完美!
    • @Maxx 它的 windows 等效项是什么
    【解决方案3】:

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

    升级Debian wheezy后,mysql启动失败。

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

    chown -R mysql.mysql /var/lib/mysql 修复了它。

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

    apt-get update
    
    apt-get upgrade
    

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

    【讨论】:

    • 谢谢@Halfstop,你拯救了我的一天。完美运行
    【解决方案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
    

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        chown -R mysql:mysql /home/developer/logs/mysql/
        

        【讨论】:

          【解决方案7】:

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

          【讨论】:

          • 我已经从 /var/log/mysql 目录复制了权限。没有结果。
          • 如果你 su 到 mysqld 用户并尝试访问该目录会发生什么?
          • 我运行“sudo -u mysql touch /home/developer/logs/test.txt”,它成功创建了一个文件
          • 我相信在这种情况下错误消息和错误代码具有误导性......当我点击这个时,我什至尝试使用二进制日志列表创建一个新的索引文件...... ,这也不起作用。
          【解决方案8】:

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

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

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

          【讨论】:

          • 你拯救了我的一天。
          【解决方案9】:

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

          【讨论】:

          • 什么意思?停止服务器 -> 禁用 log_bin -> 启动服务器 -> ...停止服务器 -> 启用 log_bin -> 启动服务器_???不幸的是,它不适合我
          • 不完全是。您是否还更改了 datadir 位置?如果是,这就是我为了让它工作而做的:在配置文件中禁用 log-bin,使用自定义配置文件 mysql_install_db,在安装结束时 mysqld 由安装脚本启动。之后:停止,启用 log-bin,启动。
          • 请注意,这是在新设置期间。如果你有一个现有的数据库,你的情况就不同了。
          【解决方案10】:

          你的配置错误:

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

          你会改用

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

          【讨论】:

            【解决方案11】:

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

            服务器 ID=1 log_bin=/var/log/mysql/mysql-bin.log

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

            chmod 777 mysql

            这适用于 MySQL 5.7 版

            【讨论】:

              【解决方案12】:

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

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

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

              【讨论】:

                【解决方案13】:

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

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

                【讨论】:

                • 原始问题显示用户使用的是 MySQL 5.1.54 版本,因此不适用
                猜你喜欢
                • 2019-11-29
                • 1970-01-01
                • 2016-04-04
                • 1970-01-01
                • 1970-01-01
                • 2020-02-12
                • 1970-01-01
                相关资源
                最近更新 更多