您有一个生产数据库服务器,无法启用查询日志记录…那么您如何看待针对数据库执行的查询呢?
答案:使用一个修改过的网络嗅探器解析MySQL包并解码它们。你得做点编译,但这是值得的。注意,这通常不会用于本地连接,尽管欢迎您尝试。
首先,您需要安装libpcap dev,这是一个允许应用程序嗅探网络数据包的开发库。
sudo apt-get install libpcap-dev
现在让我们创建一个目录,下载源代码并编译它
mkdir mysqlsniffer
cd mysqlsniffer
wget hackmysql.com/code/mysqlsniffer.tgz
tar xvfz mysqlsniffer.tgz
gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c
此时,我们的源目录中有一个名为mysqlsniffer的全新可执行文件。你可以把它复制到任何你喜欢的地方(路径中的某个地方会很有用)
要运行mysqlsniffer,需要指定MySQL正在侦听的网络接口。对我来说,是eth0。
sudo /path/to/mysqlsniffer eth0
大量的东西开始飞过…让我们再过滤一点,这样我们就可以只得到查询,而不是所有多余的数据。
$ sudo /path/to/mysqlsniffer –no-mysql-hdrs eth0 | grep COM_QUERY
192.168.73.1.2622 > server: COM_QUERY: SELECT @@sql_mode 192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=” 192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8 192.168.73.1.1636 > server: COM_QUERY: SELECT @@SQL_MODE 192.168.73.1.1636 > server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`
啊,现在我们有了…各种各样的查询信息,而不必重新启动MySQL。
以下是命令的完整选项:
用法:mysqlsniffer[OPTIONS]接口
选项:–端口N在端口号N上侦听MySQL(默认值3306)–详细显示额外数据包信息–tcp ctrl显示tcp控制数据包(SYN、FIN、RST、,ACK)–net hdr显示主要的IP和TCP头值–no mysql hdr不显示mysql头(数据包ID和长度)–state Show state–v40 mysql server是版本4.0–转储所有数据包为十六进制–帮助打印
原始源代码和更多信息,请访问:http://hackmysql.com/mysqlsniffer
如果您是在开发服务器上运行的,只需打开查询日志记录就更容易了。
...存储数据的数据库类型。这些表是相互关联的,因为它们使用约束。MySQL是一个关系数据库管理系统。用于对数据库执行操作的语言称为SQL。SQL与MySQL的主要区别在于SQL是一种管理关系数据库中数据的语言,MySQL是一种开源的关系...
...据库连接),作为JavaSDK(软件开发工具包)的一部分。使用这个API,很容易连接到关系数据库,并执行查询、**、更新和删除记录等常见操作。 ...
... 使用大多数应用程序连接到数据库通常只涉及一个特定的连接字符串,因此使用一个数据库服务器测试应用程序,然后将其切换到“生产”服务器非常简单。 ...
使用MySQL等关系数据库的最大好处之一是,它的关系结构允许您轻松地跨多个表存储和查询信息。 ...
...现的同步魔法的核心是一个MySQL数据库。如果你以前从未使用过,不要惊慌!它确实需要一点技术诀窍,但我们在这里指导您的每一步。如果你紧跟其后,就不会有任何问题。 我们要做的是安装一个免费版本的MySQL服务器,然后...
你有Linux电脑要用吗?也许你对Ubuntu服务器版的命令行版本不太适应。下面介绍如何保留标准的Ubuntu桌面并向其添加web服务功能。 无论你对只使用命令行的系统不满意,或者你正在使用你的Ubuntu桌面做其他事情,或者你只需要...
...如果您已经使用它,那么跳过前两步。 假设您使用的是Ubuntu,请从终端运行以下命令,以便在系统上安装MySQL服务器和客户端: sudo apt-get install mysql-client mysql-server 为了安全起见,您可能应该使用以下命令为MySQL服务器设置根...
...限…但这几乎没有那么安全。 因此,我们只通过SSH隧道使用端口转发,这样MySQL客户机就认为它连接到本地主机,但实际上是通过隧道连接到另一台服务器。 如果您使用的是命令行ssh,那么命令如下所示。(如果需要,可以在Pu...
...度。 找到并打开MySQL配置文件,通常是/etc/MySQL/我的.cnf在Ubuntu上。查找“日志记录和复制”部分 ## * Logging and Replication## Both location gets rotated by the cronjob.# Be aware that this log type is a performance killer. log = /var/log/mysql/mysql.log 只需取消...