我试图find一个文件,其中包含的信息将帮助我确定哪些用户访问过哪些数据库以及哪些主机。
我会想象这种数据存储在某个地方的日志文件。
MySQL页面说:
The general query log - Established client connections and statements received from clients
请参阅: http : //dev.mysql.com/doc/refman/5.0/en/server-logs.html
它还说:
By default, all log files are created in the mysqld data directory.
所以,我不问在哪里存储一般的查询日志日志,(因为我希望我会得到答案说“这取决于”)
请帮我解决:
我已经尝试了几件事情:
我在看
/etc/my.cnf
这是一个小文件,只包含以下信息:
[mysqld] skip-bdb skip-innodb set-variable = max_connections=500 safe-show-database ~ ~
我看过:
/var/lib/mysql/
但是我在那个目录下看不到任何类似日志的文件名。
任何线索都会受到欢迎。
要询问MySQL在哪里存储常规日志(以及它们是否在打开状态),只需键入:
show variables like 'general_log%';
进入MySQL命令提示符(或从phpmyadmin运行查询)。
例如
mysql> show variables like 'general_log%'; +------------------+----------------------------+ | Variable_name | Value | +------------------+----------------------------+ | general_log | OFF | | general_log_file | /var/run/mysqld/mysqld.log | +------------------+----------------------------+
我想这就是你要求的。
您需要在命令行中专门启用通用查询日志:
mysqld ... --log=[filename] mysqld .. -l [filename]
在ps ax的输出中查看mysqld的命令行,以确定您的服务器是否在和在哪里logging信息。
FWIW,通用日志的默认位置与数据文件相同,名称为[hostname].log 。
注意:如果启用通用查询日志,则日志可能会很快变大。
在Debian上,mysql日志通常存储在/ var / log / mysql /下。 像Ubuntu这样的衍生品也会有日志。 如果安装了logrotate,它会保留日常mysql日志的gzip副本几天(这是可configuration的)。
我假设其他Linux发行版可能有类似的位置login,例如/ var / logs / something。
正如serverninja指出的那样,默认情况下一般日志是禁用的 – 所以你必须从my.cnf或命令行启用它。 这会严重伤害业绩!
它应该在/ var / lib / mysql /
启用您的一般查询日志