参考这个 Stackoverflow 问题MySQL 'my.cnf' location? 这与Mac OS有关。如您所见,位置的排列很多,通常由不同的发行版和 MAMP XAMP WAMP 捆绑包和 Home Brew 组合而成。在一个盒子上拥有 2 个 mysql 守护程序却不知道的情况并不少见。
这就是为什么在评论中我建议查看(Windows) 或(Linux/Mac)select @@basedir
位置的输出。这并不是说配置文件会在那里,但如果存在的话,它应该在那里。没有它,将使用内置的默认值。通常有一个存根,一个建议的文件,命名不同(如 my-default),等待您的调整和重命名或复制到适当的文件名or 。my.ini
my.cnf
my.ini
my.cnf
还有一个名为的系统变量slow_query_log_file
,如果设置为 thru ,则其值可见SELECT @@slow_query_log_file;
。对我来说现在它的值是GUYSMILEY-slow.log
因为我没有在我的 ini (Windows) 中设置它,它默认为计算机名+“-slow.log”。
那是没有路径的文件名。文件实际写入的位置在datadir
.seen 的输出中select @@datadir;
。
在我的系统上,这意味着(通过@@basedir
)
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
会有一个设置以写入此绝对路径的慢日志文件结尾(由 帮助@@datadir
):
C:\ProgramData\MySQL\MySQL Server 5.6\data\GUYSMILEY-slow.log
并且该日志文件中的片段可能会显示如下内容:
Ini 和 cnf 更改需要 MySQL 守护程序重新启动。在该配置文件中有一个类似于(我的 5.6)的部分
[mysqld]
basedir=C:\\Program Files\\MySQL\\MySQL Server 5.6\\
datadir=C:\\ProgramData\\MySQL\\MySQL Server 5.6\\Data\\
port=3306
log_warnings = 2
和(我的 5.7)
[mysqld]
basedir=C:\\Program Files\\MySQL\\MySQL Server 5.7\\
datadir=C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Data\\
port=3307
log_error_verbosity=2
以上用于在该[mysqld]
部分中使用设置。我建议使用无害的设置(如log_error_verbosity
(5.7.2 及更高版本)或类似设置来玩此部分,保存它。重新启动守护进程并确定变量是否(正如 Rick James 将调用设置,因为大多数确实不是动态可设置的)。因此(5.7.2 及更高版本)的健全性检查select @@log_error_verbosity
可以确认更改已被拾取。如果是,宾果游戏,你做对了。
手册页服务器系统变量描述了变量(设置)以及它们是否可以在通过命令加载配置文件后动态设置/更改。重新启动守护程序时会恢复动态更改。
如何动态更改变量可能如下所示:
SET GLOBAL log_error_verbosity=2;
同样,在某些 MySQL 版本中只有某些变量可用,例如上述,在旧版本中不可用。
还要注意在服务器上同时运行的多个 MySQL 版本。我有 5.6.31 和 5.7.14。要通过命令行工具访问不同的工具,请使用诸如-P 3307
开关之类的东西来指向在端口 3307 上运行的工具。注意大写P
而不是小写(这意味着提示输入密码)。
确定是否有多个实例正在运行。我使用端口检查,例如
sudo netstat -tulpn (Linux)
netstat -aon | more (Windows, the top part, State=LISTENING)
不幸的是,这些类型的更改和反复试验需要时间并且非常令人沮丧。抱歉,我没有针对所有情况的快速简便的答案。
附录
这里的注释与评论有关。在下面,w-x-y-z
是经过编辑的 IP 地址。
On a Linux box (amazon ec2 redhat btw):
select @@slow_query_log;
-- 0 (so it is turned off)
SELECT @@slow_query_log_file;
-- /var/lib/mysql/ip-w-x-y-z-slow.log
select @@version;
-- 5.7.14
set global slow_query_log=1;
Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation 0.094 sec
(ok I was in MySQL Workbench as a dummied down user, off to do it as root via MySQL cmd line ...
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.01 sec)
mysql> select @@slow_query_log;
+------------------+
| @@slow_query_log |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
btw Workbench user can confirm the above `1`
at shell as linux user:
[ec2-user@ip-w-x-y-z ~]$ cd /var/lib/mysql
[ec2-user@ip-w-x-y-z mysql]$ sudo ls -la
(there were many files, only one needed to show you below)
-rw-r-----. 1 mysql mysql 179 Sep 19 01:47 ip-w-x-y-z-slow.log
[ec2-user@ip-w-x-y-z mysql]$ sudo vi ip-w-x-y-z-slow.log
(Header stub, the entire contents, no slow queries yet, log seen below):
/usr/sbin/mysqld, Version: 5.7.14 (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument