确定正在使用哪个configuration文件
有没有一个命令来确定MySQL 5.0当前使用的configuration文件?
如果你在Linux上,那么用strace
启动'mysqld',例如strace ./mysqld
。
在所有其他系统调用中,您会发现如下所示的内容:
stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory) stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0 open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
所以,你可以看到..它列出了.cnf文件,它试图使用和最终使用。
从梦幻般的“高性能MySQL”O'Reilly着作:
$ which mysqld /usr/sbin/mysqld $ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options" Default options are read from the following files in the given order: /etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
如果你运行mysql --verbose --help | less
mysql --verbose --help | less
它会告诉你有关第11行.cnf
文件,它会寻找。
你也可以使用mysql --print-defaults
来显示它将使用的configuration值。 这也可以用于识别它正在加载的configuration文件。
我在Windows上,我已经安装了最新版本的MySQL社区5.6
我所看到的configuration文件使用的是去pipe理工具>服务> MySQL56>右键单击>属性,并检查可执行文件的path:
“C:/ Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld”–defaults-file =“C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini”MySQL56
另一种方法是使用
mysqladmin variables
mysqld –help –verbose是危险的。 您可以轻松地覆盖运行实例的pidfile! 与–pid-file = XYZ一起使用
哦,如果你有超过1个实例运行,你不能真的使用它。 它只会显示你的默认值。
真的很好的文章:
如何findMySQLconfiguration文件?
只是做了一个Ubuntu的快速testing:
-
安装了mysql-server,它创build了/etc/mysql/my.cnf
-
mysqld –verbose –help | grep -A 1“默认选项”
110112 13:35:26 [注]插件'FEDERATED'被禁用。
默认选项按以下顺序读取:/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf〜/ .my.cnf
-
创build/etc/my.cnf和/usr/etc/my.cnf,每个都有不同的端口号
-
重新启动mysql – 它使用/usr/etc/my.cnf中设置的端口号
同时还发现了mysqld的–defaults-file选项。 如果你在那里指定一个configuration文件,那么只有那个被使用,不pipe由/ usr / sbin / mysqld返回什么–verbose –help | grep -A 1“默认选项”
我发现这非常有用:
- 在“
Control Panel -> Administration Tools
下的“服务”中findMySQL进程 - 用鼠标右键单击并select
Properties
- 单击并select
Path to executable
,看它是否包含my.ini/my.cfg
的path
一些服务器安装和configuration了多个MySQL版本。 确保你正在处理使用Unix命令运行的正确版本:
ps -ax | grep mysql
对于使用mysql作为服务运行windows服务器的人来说,find正在运行的configuration文件的一个简单方法是打开服务控制面板,find你的mysql服务(在我的情况下是'MYSQL56'),右键单击属性。 然后从这里你可以检查“Path to Executable”,它应该有一个defaults-file
开关,指向你的configuration文件的位置。
使用MySQL Workbench,它将显示在“服务器状态”下:
以防万一您正在运行mac也可以通过以下方式实现:
sudo dtruss mysqld 2>&1 | grep cnf
如果你在Windows上,你可以使用Sysinternals procmon 。 打开它并像这样configurationfilter设置,然后点击“添加”。 现在procmon会监控mysqld。
现在像平常一样启动你的mysql服务器。 Procmon将捕获mysql的后台操作。 search“我的”。 在procmon结果窗格中,你会发现如下所示:
很明显,mysql依次searchconfiguration文件列表。 在我的情况下,它find了C:\mysql-5.7.19-winx64\my.cnf
因此它使用了这个。