my.cnf 参数启用二进制日志 mySQL 4.1.20

my.cnf 参数启用二进制日志 mySQL 4.1.20

我在 mySQL 4.1.20 上启用二进制日志时遇到问题

添加后

log-bin=/var/log/mysql/tts_db
到my.cnf,mysql重新启动失败,mysqld.log中出现以下错误:

091112 03:36:37 mysqld 已启动
/usr/libexec/mysqld:未找到文件‘/var/log/mysql/tts_db.000001’(错误代码:13)
091112 3:36:37 [错误] 无法使用 /var/log/mysql/tts_db 进行日志记录(错误 13)。在 MySQL 服务器进程的整个持续时间内关闭日志记录。要再次打开它:修复原因,关闭 MySQL 服务器并重新启动它。
091112 3:36:37 [错误] 正在中止

091112 3:36:37 [注意] /usr/libexec/mysqld: 关闭完成

091112 03:36:37 mysqld 结束

当我查看并提出这个问题时,我可能偶然发现了答案,但我还是会检查一下——我直到明天早上才能重新启动服务器。mysql 目录 (/var/log/mysql) 由 root 拥有。这个问题是因为运行服务器的 mysql 用户没有在目录中创建文件的正确权限吗?

这是完整的 my.cnf(我知道 log-bin 已被注释掉 - 这是当前的)

[mysqld]
数据目录=/var/lib/mysql
套接字=/var/lib/mysql/mysql.sock

设置变量=本地文件=0

设置变量 = max_connections=130

长查询时间 = 1
日志慢查询=/var/log/mysql/mysql-slow.log

# 默认使用旧密码格式以兼容 mysql 3.x
# 客户端(使用 mysqlclient10 兼容包的客户端)。
旧密码=1

跳过 bdb

# 我们不能跳过网络,因为 phpList 服务器位于不同的服务器上。
#跳过网络
设置变量 = innodb_thread_concurrency=2

表缓存 = 512
查询缓存大小 = 20M
密钥缓冲区大小 = 64M
线程缓存大小 = 10
tmp_table_size = 48M
# 2009 年 11 月 11 日添加,以启用复制的二进制日志记录
服务器 ID = 1
#log-bin=/var/log/mysql/tts_db
#expire-logs-days = 2
#max_binlog_size = 500M
#binlog-do-db=tts_db

#==============================================================================
#mysql.server 部分
#==============================================================================
#
[mysql.服务器]
用户=mysql
basedir=/var/lib

#==============================================================================
# mysqd_safe 部分
#==============================================================================
#
[mysqld_safe]
错误日志=/var/log/mysqld.log
pid 文件=/var/run/mysqld/mysqld.pid
跳过 bdb

设置变量 = innodb_thread_concurrency=2

表缓存 = 512
查询缓存大小 = 20M
密钥缓冲区大小 = 64M
线程缓存大小 = 10
tmp_table_size = 48M

打开文件限制 = 4096

答案1

一般来说,在 Linux 系统上,错误号 13方法权限被拒绝或拒绝访问。

输出是什么

# ls -ld /var/log/mysql
# ls -l /var/log/mysql

这与您的 MySQL 用户匹配吗?

如果没有,建议的解决方案(提供 mysql 是您的 mysql 用户和 mysql 是您的组):

chown -R mysql:mysql /var/log/mysql

答案2

mysql 目录 (/var/log/mysql) 归 root 所有。这个问题是因为运行服务器的 mysql 用户没有在目录中创建文件的正确权限吗?

确切地说。mysqld此时已放弃其 root 权限。因此datadir,目录需要由以mysqld身份运行的用户和组拥有,以便它创建必要的文件。

相关内容