在my.cnf之mysqld节,添加bind-address=127.0.0.1。可以使MySQL只监听某个特定地址。
问:怎样才能指定MySQL只监听某个特定地址?
答:比较常见的办法是,在my.cnf之mysqld节,添加bind-address=127.0.0.1。但是也有人按照下面 的办法来做。
为了数据的安全,可以考虑让MySQL只守候在127.0.0.1上,这样从Internet上就无法直接访问数据库 了。修改/etc/init.d/mysql文件,在start部分找到类似下面这行:
$bindir/mysqld_safe --datadir=$datadir
--pid-file=$pid_file
修改成:
$bindir/mysqld_safe --datadir=$datadir
--pid-file=$pid_file --bind-address=127.0.0.1
重起MySQL:
/etc/init.d/mysql restart
最后netstat -l确认一下:
tcp 0 0 localhost:mysql *:* LISTEN
首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。
pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:
1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;
2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。
而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。
三、使用
接着我们来看下如何使用这个工具。
pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。
触发条件相关的参数有以下几个:
function:
∘ 默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;
∘ 也可以设置为 processlist,代表监控 show processlist 的输出;
variable:
∘ 默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;
threshold:
∘ 默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;
∘ 监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;
cycles:
∘ 默认为 5,表示连续观察到五次满足触发条件时,才触发收集;
连接参数:host、password、port、socket。
其他一些重要参数:
iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。
run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。
sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。
interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。
dest:监控数据存放路径,默认为 /var/lib/pt-stalk。
retention-time :监控数据保留时长,默认 30 天。
daemonize:以后台服务运行,默认不开启。
log:后台运行日志,默认为 /var/log/pt-stalk.log。
collect:触发发生时收集诊断数据,默认开启。
∘ collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。
∘ collect-strace:收集跟踪数据,需要 strace 工具。
∘ collect-tcpdump:收集 tcpdump 数据,需要 tcpdump 工具。
0.0.0.0 3306改成#netstat -ant 只让内网可以连到。 多谢。 就像mysql可以配置其 port= 一样呀。。 在[mysqld]下加一句port=$your_port,$your_port是你需要的端口,然后重新启动mysql即可. 注:windows下my.ini文件默认在C:\WINNT下. 比如把 #netstat -ant 0.0.0.0 3306改成#netstat -ant 192.168.0.5 3306 127.0.0.1 3306 只让内网可以连到。 不过你可以在BSD或LINUX下配置一下防火墙~~~对外网屏蔽3306端口~~简单有效的方法~~~ 注:windows下my.ini文件默认在C:\WINNT下.Trotter班长,我是想更改监听地址,也就是主机 只监听,本机的My SQL 3306,就 =127.0.0.1 3306,不是要更改端口号码。 你现在知道吗,可以想想我想你应该有办法?mikespook防火墙我知道,但本身系统,软件方面的安全我们也应该做好,让其具有更高的安全性,一直是我们这些管理员应该做的。应该知道的呀。 比如把 #netstat -ant 0.0.0.0 3306改成#netstat -ant 192.168.0.5 3306 127.0.0.1 3306 只让内网可以连到。 真正OK的做法,如下。。希望对大家有所帮助*安全配置*为了数据的安全,可以考虑让MySQL只守候在127.0.0.1上,这样从Internet上就无法直接访问数据库了。 修改/etc/init.d/mysql文件 在start部分找到类似下面这行 $bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file 修改成$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 重起MySQL/etc/init.d/mysql restart 最后netstat -l确认一下: tcp 0 0 localhost:mysql *:* LISTENOK, 该加精华~~~ 见识了论坛的威力了!! 谢谢,大家的热情回复, 真正OK的做法,如下。。希望对大家有所帮助*安全配置*为了数据的安全,可以考虑让MySQL只守候在127.0.0.1上,这样从Internet上就无法直接访问数据库了。
Mysql默认在本地环路地址127.0.0.1的3306端口监听,要使用其它IP地址需要修改配置文件。
1.编辑/etc/my.cnf
在[mysqld]节中增加下面一行:
bind-address=0.0.0.0
#全部地址或者指定的ip地址
2.重启服务
service
mysqld
restart
3.验证
netstat
-tln
登录mysql, 使用命令show global variables like 'port';查看端口号
修改端口在配置文件my.ini,修改后重新启动。
[mysqld]port=3506
比如我想监听mysql的这样的操作,delete from acrelation where *** 如果是这样的话,你可以看看关于mysql的触发器的东西。 Rainbow702 写道引用最好可以日志或其它方式记录下来数据库本身应该就有操作日志的啊问题补充:我用的hibernate的PostDeleteEvent,还是有些问题 hibernate自带的监听 jkxydp 写道用spring的aop啊,在删除记录的方法上加一个记录日志的切入点去记录啊,dao层一般增、删、改、查的方法都是单独出来的吧,在所有删除记录的方法上写切入点。 或者使用loger,其它的都不写,就在删除的方法里面写上日志应该就没问题。 用hibernate就肯定有用到log4j吧,不想全写,就只在删除方法上写就完了。
评论