MySQL不能在Ubuntu 16.04上读取5.7.13中的符号链接cnf更改



编辑:我可能发现了问题的一部分,在底部进一步编辑。

我有一个新的服务器设置运行mysql一切似乎都很好。除非我使用show变量,否则我可以在.cnf文件中看到的配置设置不会显示,并且显示的是一般默认值。因此,当我可以正常使用mysql时,设置都是默认设置。

我想弄清楚为什么我的。cnf没有被使用。我已经采取了一些步骤来检查它是否正在加载,这些步骤如下所示。一旦我确定它正在加载,我就不知道如何解释为什么我的设置没有被使用。如有任何帮助,我将不胜感激。

我的cnf文件的位置是:

/etc/mysql/mysql.conf.d/mysqld.cnf

我已经尝试验证这是下面使用的:

sudo /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"

默认选项按照给定顺序从以下文件中读取:

/etc/mysql/my.cnf ~/.my.cnf

/etc/my.cnf不存在

/etc/mysql/my.cnf是指向/etc/alternatives/my.cnf的符号链接

/etc/alternatives/my.cnf是指向/etc/mysql/mysql.cnf的符号链接

/etc/mysql/mysql.cnf包含:

!includedir/etc/mysql/conf.d/

!includedir/etc/mysql/mysql.conf.d/

etc/mysql/conf.d/是包含以下内容的目录:

mysql.cnf

mysqldump.cnf

mysql.cnf是空的,所以可能没有做任何事情

/etc/mysql/mysql.conf.d/是包含以下内容的目录:

mysqld.cnf

mysqld.cnf.dpkg-new

mysqld_safe_syslog.cnf

mysqld.cnf是指向/home/{my_username}/conf/mysqld.cnf的符号链接

/home/{my_username}/conf/mysqld.cnf是我希望它使用的配置文件。

所以我看不到问题,它看起来应该使用我的配置。

在第二次尝试验证是否使用了.cnf时,我使用了strace mysql。我的文件与上面列出的其他路径一起被列出并打开。

stat("/etc/mysql/mysql.conf.d/mysqld.cnf", {st_mode=S_IFREG|0664, st_size=2262, ...}) = 0
open("/etc/mysql/mysql.conf.d/mysqld.cnf", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0664, st_size=2262, ...}) = 0
read(4, "# Generated by Percona Configura"..., 4096) = 2262
read(4, "", 4096)                       = 0
close(4)                          = 0 close(4)

看起来还是应该使用。cnf文件。

有谁能解释一下为什么不是吗?

编辑:我刚刚做了一个strace mysqld而不是strace mysql,我得到了我的。cnf文件的权限错误。这可能就是问题所在。但是我不太了解mysql和mysqld之间的区别,有人能解释一下吗?

stat("/etc/mysql/mysql.conf.d/mysqld.cnf", {st_mode=S_IFREG|0664, st_size=3218, ...}) = 0
open("/etc/mysql/mysql.conf.d/mysqld.cnf", O_RDONLY) = -1 EACCES (Permission denied)

这是由apparmor引起并解决的

Ubuntu有一个叫做AppArmor的东西,一个内核集成控制应用程序如何访问的应用程序安全系统文件系统。来源:Oracle Article

如果你把。cnf放在一个自定义的位置,你需要给mysql访问该目录的权限。在我的情况下,我需要用以下内容编辑这个/etc/apparmor.d/local/usr.sbin.mysqld:

/home/{my_username}/conf/mysqld.cnf r

你也可以使用:

/home/{my_username}/conf/* r

相关内容

  • 没有找到相关文章

最新更新