编辑:我可能已经发现了问题的一部分,在底部进一步编辑。
我有一个运行 mysql 的新服务器设置,一切似乎都很好。除了每当我使用显示变量时,我在 .cnf 文件中看到的配置设置都没有显示,并且显示了似乎是一般默认值的配置设置。所以它会出现,而我可以很好地使用 mysql,设置都是默认值。
我想弄清楚为什么我的 .cnf 没有被使用。我已经采取了一些步骤来检查它是否确实正在加载,这些步骤如下所示。一旦我确定它正在被加载,我不知道如何解释为什么我的设置没有被使用。任何帮助将不胜感激。
我的 cnf 文件的位置是这样的:
/etc/mysql/mysql.conf.d/mysqld.cnf
我试图验证以下内容是否正在使用:
sudo /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
默认选项按给定顺序从以下文件中读取:
/etc/my.cnf /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-新
mysqld_safe_syslog.cnf
mysqld.cnf
是一个符号链接/home/{my_username}/conf/mysqld.cnf
/home/{my_username}/conf/mysqld.cnf
是我希望它使用的 conf 文件。
所以我看不到应该使用我的配置的问题。
在第二次尝试验证这个 .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)