- 我在虚拟专用服务器(Linux)上有一个 WHM/Cpanel 经销商托管帐户。
- 我通过 SSH 拥有该机器的 root 访问权限
我正在尝试找到一个文件,其中包含的信息将帮助我确定哪些用户从哪些主机访问了哪个数据库。
我想象这种数据存储在某个日志文件中。
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.
因此,我不是在问通用查询日志存储在哪里,(因为我希望得到的答案是“视情况而定”)
请帮我解决:
“如何找到 Linux 机器上 MySQL 通用查询日志的存储位置”
我已经尝试过几件事:
我在看
/etc/my.cnf
这是一个很小的文件,仅包含以下信息:
[mysqld]
skip-bdb
skip-innodb
set-variable = max_connections=500
safe-show-database
~
~
我已经查看过:
/var/lib/mysql/
但我在该目录中看不到任何类似日志的文件名。
任何有关此事的线索都将受到欢迎。
答案1
要询问 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 |
+------------------+----------------------------+
我认为这就是你所要求的。
答案2
您需要在命令行上专门启用通用查询日志:
mysqld ... --log=[filename]
mysqld .. -l [filename]
查看输出中的 mysqld 命令行以ps ax
确定您的服务器是否正在记录信息以及在何处记录信息。
值得一提的是,一般日志的默认位置与数据文件位于同一目录,名为[hostname].log
。
注意:如果启用通用查询日志,日志会很快变得很大。
答案3
在 Debian 上,mysql 日志通常存储在 /var/log/mysql/ 下。Ubuntu 等衍生版本也会将日志存储在该位置。如果安装了 logrotate,它会将每日 mysql 日志的 gzip 副本保留几天(这是可配置的)。
我假设其他 Linux 发行版可以在类似的位置有日志,例如 /var/logs/something。
正如 serverninja 指出的那样,常规日志默认是禁用的 - 因此您必须启用它,无论是从 my.cnf 还是命令行。这会严重损害性能!
答案4
它应该位于 /var/lib/mysql/ 中,
启用您的常规查询日志