sql server 利用首字母拼音排序和笔画排序的语句

0

分类 : 编码知识 | 发表时间 07-07-2009

今天在整理一个大分类时,由于分类下面综合了几个网站的信息,因此想把几十个小分类综合一下,但拷贝到一起时,人工来分辨无疑极为伤神又伤眼,这样就想到用sql排序了。

首先把这些信息在editplus中,转换为一列,拷贝到excel中,拷贝后记着在第一行前插入一行,作为列标头,例如为name,然后在sql中表中,导入数据,生成一个新表,例如fenlei,打开sql语句行,执行:

SELECT *
FROM Fenlei
ORDER BY name COLLATE Chinese_PRC_CS_AS_KS_WS

这是按首字的拼音来排序。

SELECT *
FROM Fenlei
ORDER BY name COLLATE Chinese_PRC_Stroke_CS_AS_KS_WS

这是按首字笔画来排序。

Linker对SQL学习不多,现用现学现查找,记录收藏下,共享之。

MySQL安全问题(匿名用户)的一点心得

0

分类 : 技术文摘 | 发表时间 28-09-2007

在安装完MySQL后,它会自动创建一个root用户和一个匿名用户,其初始密码都是空,对于前者,很多参考资料上都会提醒大家要注意及时设定一个密码,而忽略了后者,大概是因为后者默认设定为只能在本机使用的缘故吧。

  但如果你的MySQL是要提供给Web服务器作数据库服务的,忽略这个匿名用户的代价可能相当惨重,因为在默认设置下,这个匿名用户在localhost上几乎拥有和root一样的权限,这时候,如果你的客户拥有上传脚本文件、脚本文件可以进行MySQL数据库操作(比如允许操作MySQL的php)的权限已经可能将你的MySQL改动得面目全非了:

  我今天帮朋友整理他的主页空间的时候,试着写了一个很简单的执行sql语句的php文件上传上去,其中连接字中的user,password我都试着置空,host=localhost,结果发现我的sql语句可以执行,于是执行select * from MySQL.user察看用户权限,发现这个用户在localhost权限非常高,连grant_priv都有,(察看的时候,会发现在root用户下有两行用户名、密码为空的,但各项权限有y\n的,就是这个匿名用户本地、远程权限设置了)

  所以我试着用这个php页面创建一个新用户,并grant给他较高的权限,结果一举成功,这样我就可以用这个新用户通过我本机的MySQL client连接到这个网站的MySQL server,并用这个新建立的用户的管理权限对这个网站的MySQL server进行管理,看到自己可以进行这样轻易获得深入的数据库操作,我怎么还敢把朋友的主页空间的敏感资料放入这个MySQL server呢?

  改进建议:

  1、在安装完成MySQL 后,不仅改变root用户的的密码,也同时改变匿名用户的密码,方法类似改变root的密码的方式:

  MySQL> UPDATE user set password=PASSWORD(‘yournewpassword’) where user=”;
  MySQL>FLUSH PRIVILEGES;

  2、如非必要,删除这个匿名用户,这样所有人要使用MySQL 都必须提供用户名,即便日后出了问题,也容易查找问题的源头。

  3、除了root用户外,其他用户包括匿名用户(如果没有删除这个用户)不应该拥有grant权限,防止管理权限不受控制的扩散出去。

  4、赋予用户update\delete\alert\create\drop权限的时候,应该限定到特定的数据库,尤其要避免普通客户拥有对MySQL数据库做操作的权限,否则你的系统设置很可能被替换掉。

  5、检查MySQL.user表,取消不必要用户的shutdown_priv,reload_priv,process_priv和File_priv权限,这些权限可能泄漏更多的服务器信息包括非MySQL的其它信息出去。

  6、如果不打算让你的用户使用MySQL数据库,在提供诸如php这样的脚本语言的时候,重新设置或编译你的php,取消它们对MySQL的默认支持。

SQL Server 2005数据库镜像简介

0

分类 : 技术文摘 | 发表时间 11-05-2006

自从SQL Server 2000以来,你已经能够通过使用复制来创建一个备用的服务器、传输日志,以及备份和重新存储了——但是现在微软又引入了一个内建的工具,它可以实现自动的错误恢复。数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复。

Edgewood Solutions 的Greg Robidoux 回答了我们一些SQL Server 2005中有关数据库镜像的常见问题,同时还解释了为什么你现在就应该开始测试这个内建的功能来看看它最终是否会给你的环境带来好处。

什么是数据库镜像?

Robidoux:数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问;它只用在错误恢复的情况下。

因为是在SQL Server 2005中新引入的特性,这个功能只能用在,这个版本的软件中。在某种程度上说,它是复制和日志传输的混合体:你所有的事物都在事物级别(复制)上移动(日志传输)到你的数据库的一个镜像拷贝上,同时减少了你在实现日志传输或者复制的时候可能会面临的问题。

复制包括大量的移动部分,并且如果你的数据库计划经常改变的话,要保证你的复制运行得流畅也是困难重重。对于日志传输,为了保证同步,同样需要实现很多的处理,例如创建备份、拷贝备份,以及备份重存。如果有一个进程崩溃了,整个处理过程就崩溃了。

数据库镜像的工作方式是什么?

Robidoux :要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为“基本的”,第二个服务器被称作“镜像的”。基本数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。

除了基本和镜像之外,你还可以引入另一个可选的组件,名为“证人”。证人数据库是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了2比1投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。证人服务器只有在你想实现自动错误恢复的时候才需要用到。

实现的方式是什么?

Robidoux :数据库镜像提供了三种实现的方式。根据你想要用什么方式来进行错误恢复处理来进行选择。

高可用性:这个操作模式选项允许你在两台服务器上同步事务写入,并支持自动错误恢复。要使用这个选项,你必须还要使用一个证人服务器。

高保护:这个选项可以让你在两台服务器上同步事物写入,但是错误恢复是手工的。因为自动的错误恢复不是这个选项的一部分,所以也不会用到证人服务器。

高性能:这个选项不关心两台服务器上的写入是否是同步的,因此在性能上有所提高。当使用这个选项的时候,你只能假设镜像服务器上的所有事情都是成功完成。这个选项只允许手工的错误恢复,因此不会用到证人服务器。

时刻记住将你的数据自动恢复到第二个拷贝才是数据库镜像的真正好处。因此,大多数的实现可能都是使用的高可达性方式。其他的选项仍然提供了内建的错误恢复过程,但是前提是你在发生错误的时候对进行自动的错误恢复怀有极大的兴趣。

数据库镜像可以工作在哪几个版本上?

Robidoux :数据库镜像只能在标准版、开发版和企业版的SQL Server 2005中找到。基本服务器和镜像服务器的SQL Server运行实例都需要是这几个版本。证人服务器可以运行在任何版本的SQL Server上。此外,还有其他的一些特性是SQL Server的开发版和企业版上特有的,但是标准版具有最基本的功能。

总结

现如今,SQL Server 2005的数据库镜像已经关掉了,但是所有的功能仍然存在。数据库镜像可以通过使用检索标志来打开——但是微软现在并不支持这个功能了,所以不要在你的产品环境中运行它。数据库镜像将会在本年年末完全实现并被支持。

要打开这个特性并开始你的测试,你可以看看以前的专家知识解答。微软正在寻找额外的反馈,所以你可以看看它是否可以作为你的SQL Server环境的候选。

成功网络管理员必备“软件”素质

0

分类 : 技术文摘 | 发表时间 08-05-2006

做一名成功的网管员不仅要进行网络的规划设计、网络设备的招投标、系统集成等事项外,必须具备一定的“硬件”素质,能选择和采购好的网络设备,进行安装、配置和调试,保证局域网正常、稳定地运行,要想做好这些工作,则必须要具备一定“软件”素质。本文就和大家一起讨论成功网管员必备的“软件”素质。

  一、成功网管员必备的“软件”素质

  由于许多网络设备的软件以及服务器的操作系统都是英文版的,因此要想熟练地使用和掌握这些软件,我们的网管员必须有一定的英文阅读能力,能够掌握大量的计算机专业词汇,从而能够流畅地阅读原版的白皮书和技术资料,最主要是看懂网络设备和管理软件说明书,了解网络技术的最新发展动态。

  若欲提高企业网络应用水平,就必须要有恰当的管理培训。根据企业网建设的经验,技术培训是企业网络建设能否成功的关键环节。因此,网络管理员还往往承担着繁重的技术培训任务,必须能够胜任教师的工作。根据企业网中不同人员的责任和地位,分别对其进行内容以及深度不同的培训,重点是对软件的应用方面的。例如,对网络管理维护人员的培训、对网络开发人员的培训,以及对普通工作人员的培训。培训必须面向应用、富有针对性,真正做到因材施教、学以致用。

  1、掌握服务器软件的安装和配置方法

  操作系统

  计算机是由硬件和软件组成的,缺了任何一样都无法运行。我们对计算机进行操作,都是利用操作系统来完成。服务器上运行的是网络操作系统,网络操作系统(NOS)是网络的心脏和灵魂,是向网络计算机提供服务的特殊的操作系统。它在计算机操作系统下工作,使计算机操作系统增加了网络操作所需要的能力。

一般情况下,NOS是以使网络相关特性达到最佳为目的的,如共享数据文件、软件应用,以及共享硬盘、打印机、调制解调器、扫描仪和传真机等。NOS还对每个网络设备之间的通信进行管理,这是通过NOS中的媒体访问法来实现的。

  大家目前比较熟悉的可能就是windows 操作系统,在服务器上运行早期是windows NT Server,现在普遍使用是windows 2000/2003 Server;除了Windows外,一类是UNIX,代表产品包括SUN Solaris、HP-UX、IBM AIX等;还有一类是Linux,它虽说是后起之秀,但由于其开放性和高性价比等特点,近年来获得了长足发展,象redhat、红旗等产品;还有就是Novell系统。

  总的来说,Windows是简单易用的操作系统,适合中小型企业及网站建设;UNIX具有非常好的安全性和实时性,广泛用在金融、银行、政府、军事及大型企业;Linux具有高的安全性和稳定性,一般用做网站的服务器和邮件服务器;Novell是工业控制、生产企业、证劵系统比较理想的操作系统。

  首先作为网管员必须要了解这些操作系统的使用场合,操作系统在服务器上安装和配置方法,系统的日常运行和管理,掌握出现问题如何解决等技巧,操作系统的安全设置(系统补丁的安装)等等。完成这些工作是我们网管员必须具备软件的素质之一。

  应用软件

  我们在对操作系统掌握比较熟练后,在OS基础上架构网站(WEB),DNS、DHCP、FTP、Email等服务,以及视频、短信、游戏、BBS等等,都是服务器上的应用软件,还有代理软件、局域网内服务器/客户机上网络防病毒软件的安装与运行;以及企业本身的财务软件、办公系统、管理信息系统以及ERP等应用系统,保证这些应用软件(系统)的正常、稳定运行,是我们成功网管员必须具备软件的重点素质之一。

  2、网管软件及网管工具软件

  网络管理的需求决定网管系统的组成和规模,任何网管系统无论其规模大小,基本上都是由支持网管协议的网管软件平台、网管支撑软件、网管工作平台和支撑网管协议的网络设备组成。

其中网管软件平台提供网络系统的配置、故障、性能及网络用户分布方面的基本管理,也就是说,网络管理的各种功能最终会体现在网管软件的各种功能的实现上,软件是网管系统的“灵魂”,是网管系统的核心。

  网管平台软件的主要作用是收集网络设备的硬件信息,通过这些网管软件可以观看网络拓扑图、设置警报等。网络管理员在很多情况必须借助各种管理软件监控整个网络的运行情况,了解网络服务和用户。

此外,使用管理软件的设备诊断功能是查找故障的好方法。借助网络管理的一些小的工具软件,可以大大减轻网管员日常的重复性劳动和工作压力,提高工作效率,为实现提高生产力,保障企业效益最大化提供基础。这肯定是我们成功网管员必须具备软件的重点素质之一。

  3、掌握数据库的安装和配置方法

  数据库服务也是服务器提供的重要服务之一,常见的数据库系统有MS SQL Server、MySQL、Oracle、Sybase、DB2等。许多应用系统都是在数据库系统基础上进行的,比如企业信息管理系统、计费系统等,特别是一些大型的Web网站,一般都使用数据库来作为后台支撑,完成三级的Web/Server构架。因此我们也必须要掌握各种数据库的安装和配置方法,做好数据库管理员的日常运行维护工作。

  4、掌握数据备份与灾难恢复

  在网络系统安全建设中必不可少的一个环节就是数据的常规备份和历史保存。一般在生产本地的备份目的主要有两个:一是生产系统的业务数据由于系统或人为误操作造成损坏或丢失后,可及时在生产本地实现数据的恢复;另一个目的是在发生地域性灾难(地震、火灾、机器毁坏等)时,可及时在本地或异地实现数据及整个系统的灾难恢复。

  对于大多数网管员来说,备份是一项繁重的任务。网络备份最好能够实现定时自动备份,这样可以大大减轻管理员的压力。一般来说,为了保护数据安全和提高数据的持续可用性,企业要从RAID保护、冗余结构、数据备份、故障预警等多方面考虑。

  作为网管员还必须要学会和掌握备份软件的使用和操作,这样才能做好日常的数据备份和恢复工作。要做到灾难恢复,首先备份系统时要做到满足系统容量不断增加的需求,并且备份软件必须能支持多平台系统。

当网络上连接上其它的应用服务器时,对于网络存储管理系统来说,只需安装支持这种服务器的客户端软件即可将数据备份到磁带库或光盘库中。其次,网络数据存储管理系统是指在分布式网络环境下,通过专业的数据存储管理软件,结合相应的硬件和存储设备,来对全网络的数据备份进行集中管理,从而实现自动化的备份、文件归档、数据分级存储以及灾难恢复等。

  5、掌握网络设备与防火墙的配置和调试方法

  网管员要熟悉思科等主流厂商的基本网络设备(包括交换机、路由器)的配置和调试方法,这也是网管员最基本的工作之一;为了保障网络的正常稳定运行,网管员还必须了解和掌握网络安全设备(包括防火墙、IDS)的配置和调试方法,因此要学习和调试这些设备命令语句,制定安全策略,根据实际需求,配置好网络设备和安全设备,使它们能发挥最优的、最好的效果



  二、总结

  网管员必须具备创造和应变能力,硬件设备、管理工具、应用软件所提供的直接功能往往是有限的,而显示的网络需求却是无限的,如何用有限的功能满足无限的需要呢?这就需要网络管理员具有很强的、有创造性的应变能力,从而利用现有的功能、手段和技术,通过不同功能的排列、组合和巧妙结合,创造性地实现各种复杂的功能,满足用户各种需求。

  网络还是一个系统,因此一项功能的实现往往需要借助于多种措施和设置,而导致故障发生往往由于多种原因,既可能是一因多果,也可能是一果多因。所以网络管理员必须拥有非常强的分析和判断能力,用全面、动态和联系的眼光分析问题,善于进行逻辑推理,从纷繁复杂的现象中发现事物的本质。

  网络管理员必须拥有充沛的体力、旺盛的精力和坚韧不拔的毅力。网络总是在不问地断运行,网络管理工作也同样是在日复一日,年复一年地重复进行。长时间的、大强度的脑力劳动无疑是非常辛苦的,所以,网络管理员既要非常热爱自己的工作,又要有强健的体魄支持,两者缺一不可。

  除了技术过硬之外,网络管理员还必须具有较好的沟通能力。与网络公司沟通,既可传达公司对功能的需求,构建令人满意的网络,也可以了解网络设计理念,掌握相关的知识和技术;与用户沟通,可以及时掌握用户的需求,更好地为用户提供服务;与领导沟通,可以及时了解领导意图,调整网络服务策略和内容。

  因此作为一名成功的网管员还必须具备上面所说的“软”素质,结合“硬件”素质和“软件”素质,才能真正做好企业的“网管”工作。

IIS突然不解析asp文件的处理步骤

0

分类 : 网站技术 | 发表时间 20-04-2006

原文出处:http://www.iisfaq.com/Default.aspx?tabid=3094
整理翻译:ajou

1.如果WEB站点目录下有Global.asa文件,改此文件文件名为Global.old.重启WEB服务,在记事本中写如下代码(原文中无代码,实际最简单的那种asp源码就行,译者注).文件另存为Test.asp于WEB根目录下.
如果asp文件能正常执行,问题就出在Global.asa上,如果依然不行,请转到第二步.
参阅如下微软知识库有关Global.asa文件出错的更多信息.

Q288245 PRB: Global.asa Does Not Fire from Personal Web Server on Windows 98
Q265275 FP2000: Global.asa Does Not Run in FrontPage Web
Q173742 FIX: Global.asa Is Not Executed If Restricting Web Access

2.将web站点的应用程序保护级别设置为”低”,重启IISAdmin服务.如果asp文件如此能正常执行,说明问题出在IWAM用户上,请跳到第三步继续.如果没有正常执行,请在管理工具中检查组件服务确保能看到IIS Packages,确保组件服务没有失败后,确认本地用户组中有如下用户存在:
NT AUTHORITY\Authenticated Users
NT AUTHORITY\INTERACTIVE
关于更多组件服务出错的信息,请参考入下知识文章:
Q301919 PRB: Cannot Expand ‘My Computer’ in Component Services MMC Snap-In
3.如果通过第二步asp文件能正常执行,将站点的应用程序保护级别设回”中”或”高”,将IWAM用户添加到本地管理员用户组中,如果通过这步,asp文件能正常执行,说明IWAM用户的访问许可权限就存在问题,请跳到第四步,如果asp文件还没正常执行,请在命令提示符中执行Synciwam.vbs 工具.
方法:打开命令提示符窗口敲入如下命令:
C:\Inetpub\adminscripts>cscript synciwam.vbs.
关于IWAM用户(设置不正确)导致asp文件不能正常执行,请参考入下知识库.
Q308622 HOW TO: Perform Administration Tasks in IIS from a Command Prompt
Q297989 PRB: Configured Identity Is Incorrect for IWAM Account
Q255770 PRB: Logon Failure: Unknown User Name or Bad Password When You Run Out-of-Process Webs
Q236007 Domain Controller Demotion Causes Out-of-Process Applications to Fail

4.解决IWAM用户许可权限的问题,请使用windows 2000的第三方产品:Regmon 和 Filemon.请在http://www.sysinternals.com中下载这些工具.
当你执行asp页面请求时运行这些工具, Dllhost.exe 进程在Regmon 中查找”ACCDENIED” (在Filemon中查找”FAILURE”).
注意:在IE进程出现”操作失败”时不要紧张,这只是普通现象.~~
关于IIS功能正常运作所需的最小条件,请参阅知识库:
Q271071 Minimum NTFS Permissions Required for IIS 5.0 to Work
在看到Dllhost.exe 进程”操作失败”的错误信息后,用Regedit32工具修改注册表里任何必须的NTFS许可权限(好像是病句,,汗…)

5.在装完IIS5.0后,从WEB 服务器控制台或其他网络上的工作站浏览asp或html文件,WEB服务可能返回如下错误信息:
HTTP 500 内部服务器错误.
默认的web服务可能处于运行状态,如果运行netstat -an 你可能注意到WEB服务器正监听TCP80端口,即HTTP的默认端口.
注意:如果在使用IE5.0(或以上版本,译者注),你可能屏蔽了IE高级选项中的显示友好HTTP错误信息选项,更多信息:请参考微软知识库:
Q218155 Description of Hypertext Transport Protocol Error Messages
下面的几条可能出现在装有IIS5.0机器的事件日志中:


Application Log: COM+ error with Event ID 4099
System Log: W3SVC error with Event ID 59
System Log: W3SVC warning with Event ID 36.
Iis5.log 文件(WINNT目录下)可能包含下面错误信息:
0x8004e00f=COM+ was unable to talk to the Microsoft Distributed Transaction Coordinator
你正试图打开com+管理者使用的组件服务,MMC停止响应.
原因
IIS5.0依赖与COM+,COM+依赖于Distributed Transaction Coordinator (DTC) 服务运行,DTC检查版本的机制(包括在windows 2000以前的SQL SERVER版本)不能识别Windows2000所用的版本属性,结果SQL SERVER的DTC安装程序移除了WINDOWS 2000安装的DTC服务,更多请查阅微软知识库:
Q249310 BUG: Installing SQL Server on Windows 2000 Uninstalls DTC Service
解决
如下步骤解决这个问题:
a.验证Dtcsetup.exe (默认在c:\Winnt\System32 下)是否为1999.9.3422.24 或以后版本号
b.运行Dtcsetup.exe 安装DTC服务
c.开始DTC服务
d.控制面板中,双击”添加删除程序”
e.选”添加删除Windows组件”,移除IIS5.0再重新安装.

现状
微软已经确认在SQL Server versions 6.5 和 7.0 and MSDE 1.0中这会是个问题
详细请参见文章:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q257267

6.最后一招:依照下面步骤自己创建IIS Packages
a.浏览组件服务删除下列包
a.IIS In-Process Applications
b.IIS Out-of-Process Pooled Applications
c.IIS Utilities
b.打开命令提示符,转到文件夹%windir%\system32\inetsrv,执行命令:
rundll32 wamreg.dll, CreateIISPackage
注意:CreateIISPackage是大小写敏感的,确人输入正确.
c.重新打开组件服务,你将看到IIS COM+应用已经重新创建了.
d.从命令提示符中运行IISRESTART再测试之前没有正确执行的任何asp文件.

让window服务进程中自动加载MYSQL

0

分类 : 技术文摘 | 发表时间 17-04-2006

在安装mysql解压包时虽然安装成功但在WINDOW自动启动时无法加载MYSQL服务,通过在网上不断的找资料还有自己的实践终于搞定,希望对遇到这要问题的朋友有点作用,
  如何让MYSQL服务进程中自动加载MYSQL

  1.在 开始--》运行中执行 c:\mysql\bin\mysqld-nt -install (卸载时执行-uninstall)

  2.把c:/mysql/my-medium.ini改名为my.ini并修改里面的相关配置拷到c:/winnt 或c:/winnts c:/windows 下

  3.然后在开始--》运行 中执行 net start|stop|restart mysql


  下面在本地机上采用安装的方式生成的my.ini

  [注:要根据自己的实际情况修改相应的参数即可]

# MySQL Server Instance Configuration File
# ———————————————————————-
# Generated by the MySQL Server Instance Configuration Wizard
#
#
# Installation Instructions
# ———————————————————————-
#
# On Linux you can copy this file to /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options
# (@localstatedir@ for this installation) or to
# ~/.my.cnf to set user-specific options.
#
# On Windows you should keep this file in the installation directory
# of your server (e.g. C:\Program Files\MySQL\MySQL Server 4.1). To
# make sure the server reads the config file use the startup option
# “–defaults-file”.
#
# To run run the server from the command line, execute this in a
# command line shell, e.g.
# mysqld –defaults-file=”C:\Program Files\MySQL\MySQL Server 4.1\my.ini”
#
# To install the server as a Windows service manually, execute this in a
# command line shell, e.g.
# mysqld –install MySQL41 –defaults-file=”C:\Program Files\MySQL\MySQL Server 4.1\my.ini”
#
# And then execute this in a command line shell to start the server, e.g.
# net start MySQL41
#
#
# Guildlines for editing this file
# ———————————————————————-
#
# In this file, you can use all long options that the program supports.
# If you want to know the options a program supports, start the program
# with the “–help” option.
#
# More detailed information about the individual options can also be
# found in the manual.
#
#
# CLIENT SECTION
# ———————————————————————-
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]

port=3306

[mysql]

default-character-set=latin1


# SERVER SECTION
# ———————————————————————-
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306


#Path to installation directory. All paths are usually resolved relative to this.
basedir=”C:/Program Files/MySQL/MySQL Server 5.0/”

#Path to the database root
datadir=”C:/Program Files/MySQL/MySQL Server 5.0/Data/”

# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=latin1

# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB

# Set the SQL mode to strict
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

# The maximum amount of concurrent sessions the MySQL server will
# allow. One of these connections will be reserved for a user with
# SUPER privileges to allow the administrator to login even if the
# connection limit has been reached.
max_connections=100

# Query cache is used to cache SELECT results and later return them
# without actual executing the same query once again. Having the query
# cache enabled may result in significant speed improvements, if your
# have a lot of identical queries and rarely changing tables. See the
# “Qcache_lowmem_prunes” status variable to check if the current value
# is high enough for your load.
# Note: In case your tables change very often or if your queries are
# textually different every time, the query cache may result in a
# slowdown instead of a performance improvement.
query_cache_size=0

# The number of open tables for all threads. Increasing this value
# increases the number of file descriptors that mysqld requires.
# Therefore you have to make sure to set the amount of open files
# allowed to at least 4096 in the variable “open-files-limit” in
# section [mysqld_safe]
table_cache=256

# Maximum size for internal (in-memory) temporary tables. If a table
# grows larger than this value, it is automatically converted to disk
# based table This limitation is for a single table. There can be many
# of them.
tmp_table_size=5M


# How many threads we should keep in a cache for reuse. When a client
# disconnects, the client’s threads are put in the cache if there aren’t
# more than thread_cache_size threads from before. This greatly reduces
# the amount of thread creations needed if you have a lot of new
# connections. (Normally this doesn’t give a notable performance
# improvement if you have a good thread implementation.)
thread_cache_size=8

#*** MyISAM Specific options

# The maximum size of the temporary file MySQL is allowed to use while
# recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE.
# If the file-size would be bigger than this, the index will be created
# through the key cache (which is slower).
myisam_max_sort_file_size=100G

# If the temporary file used for fast index creation would be bigger
# than using the key cache by the amount specified here, then prefer the
# key cache method. This is mainly used to force long character keys in
# large tables to use the slower key cache method to create the index.
myisam_max_extra_sort_file_size=100G

# If the temporary file used for fast index creation would be bigger
# than using the key cache by the amount specified here, then prefer the
# key cache method. This is mainly used to force long character keys in
# large tables to use the slower key cache method to create the index.
myisam_sort_buffer_size=8M

# Size of the Key Buffer, used to cache index blocks for MyISAM tables.
# Do not set it larger than 30% of your available memory, as some memory
# is also required by the OS to cache rows. Even if you’re not using
# MyISAM tables, you should still set it to 8-64M as it will also be
# used for internal temporary disk tables.
key_buffer_size=8M

# Size of the buffer used for doing full table scans of MyISAM tables.
# Allocated per thread, if a full scan is needed.
read_buffer_size=64K
read_rnd_buffer_size=256K

# This buffer is allocated when MySQL needs to rebuild the index in
# REPAIR, OPTIMZE, ALTER table statements as well as in LOAD DATA INFILE
# into an empty table. It is allocated per thread so be careful with
# large settings.
sort_buffer_size=212K


#*** INNODB Specific options ***


# Use this option if you have a MySQL server with InnoDB support enabled
# but you do not plan to use it. This will save memory and disk space
# and speed up some things.
#skip-innodb

# Additional memory pool
that is used by InnoDB to store metadata
# information. If InnoDB requires more memory for this purpose it will
# start to allocate it from the OS. As this is fast enough on most
# recent operating systems, you normally do not need to change this
# value. SHOW INNODB STATUS will display the current amount used.
innodb_additional_mem_pool_size=2M

# If set to 1, InnoDB will flush (fsync) the transaction logs to the
# disk at each commit, which offers full ACID behavior. If you are
# willing to compromise this safety, and you are running small
# transactions, you may set this to 0 or 2 to reduce disk I/O to the
# logs. Value 0 means that the log is only written to the log file and
# the log file flushed to disk approximately once per second. Value 2
# means the log is written to the log file at each commit, but the log
# file is only flushed to disk approximately once per second.
innodb_flush_log_at_trx_commit=1

# The size of the buffer InnoDB uses for buffering log data. As soon as
# it is full, InnoDB will have to flush it to disk. As it is flushed
# once per second anyway, it does not make sense to have it very large
# (even with long transactions).
innodb_log_buffer_size=1M

# InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and
# row data. The bigger you set this the less disk I/O is needed to
# access data in tables. On a dedicated database server you may set this
# parameter up to 80% of the machine physical memory size. Do not set it
# too large, though, because competition of the physical memory may
# cause paging in the operating system. Note that on 32bit systems you
# might be limited to 2-3.5G of user level memory per process, so do not
# set it too high.
innodb_buffer_pool_size=8M

# Size of each log file in a log group. You should set the combined size
# of log files to about 25%-100% of your buffer pool size to avoid
# unneeded buffer pool flush activity on log file overwrite. However,
# note that a larger logfile size will increase the time needed for the
# recovery process.
innodb_log_file_size=10M

# Number of threads allowed inside the InnoDB kernel. The optimal value
# depends highly on the application, hardware as well as the OS
# scheduler properties. A too high value may lead to thread thrashing.
innodb_thread_concurrency=8

Redhat+Apache+Mysql+ PHP配置

0

分类 : 技术文摘 | 发表时间 16-04-2006

Ps:不知道有哪位移植通达oa至linux成功的,这个方案可以先打个基础,有成功的,给打个招呼


Linux系统的安装我就不讲了,这是基本功,其实这篇文章在类似Redhat的其他linux也应该通用,大家只要掌握我提供的方法就行。记得安装Redhat9。0的时候不要安装系统默认的apache,mysql和php以及相关的软件。已经安装的请用rpm -e * 删除已经安装的包。
1.安装Mysql3.23.58
其实老实说直接安装Mysql官方网站提供的rpm包也是一个比较可行的办法,他的官方网站的rpm包的提供基本跟tar包发行是同步的,这点我比较喜欢,至少安装rpm包的在后面的调试中不会出现mysql库文件找不到的情况。但这里还是有必要讲一下自定义安装的步骤,毕竟网友自定义安装的还说挺多的。
软件获取:http://www.mysql.com/downloads/index.html
安装步骤:
tar zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58
./configure –prefix=/usr/local/mysql –sysconfdir=/etc –localstatedir=/var/lib/mysql
make
make install
#prefix=/usr/local/mysql mysql安装的目标目录
#sysconfdir=/etc my.ini配置文件的路径
#localstatedir=/var/lib/mysql 数据库存放的路径
安装完以后要初始化数据库,当然你是升级的话不用做这步;
/usr/local/mysql/bin/mysql_install_db

如果系统没有mysql这个用户的话,最好做以下这步:
useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c “MySQL Server” -u 27 mysql
然后我启动mysql
/usr/local/mysql/bin/safe_mysqld &
ok,先看看mysql能否正常工作
mysql -uroot mysql
一般情况下都是不能正常链接数据库,错误提示一般为:
ERROR 2002: Can”t connect to local MySQL server through socket ”/var/lib/mysql/mysql.sock” (2)
其实网上大家问的最多的都是整个问题,说什么链接不到mysqld.sock,其实大家不妨看看mysql的错误日志就明白怎么回事,我这里的错误日志是在
/var/lib/mysql/*.err 你会发现mysql只所以不能启动,是因为/var/lib/mysql的权限不允许mysql服务访问,英文mysql默认是调用mysql用户来启动服务的,好了,既然知道是什么原因找到不能启动,那就简单了。我们只要
chown -R mysql:mysql /var/lib/mysql 就行,如果还是启动不了,再慢慢调试权限,反正一般启动不了都是权限的问题。
如果大家还是不能启动不了的话,那就用我的比较繁琐的权限的设置,反正我每次都是这么做的,一般不会有问题,见下:
chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a
做完上面的步骤,然后把你编译目录的一个脚本COPY过去
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig –add mysqld
用ntsysv设置使mysql每次启动都能自动运行。
好了,至此mysql安装完毕,你可以这样起动你的mysql服务
/etc/rc.d/init.d/mysqld start
下面这步比较关键,
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
大家可以不做这步,大可以在编译其他软件的时候自定义myslq的库文件路径,但我还是喜欢把库文件链接到默认的位置,这样你在编译类似PHP,Vpopmail等软件时可以不用指定mysql的库文件地址。
2.安装Apache1.3.29。我没有选择安装Apache2.0是我对他还是不放心,因为网上最新公布的apache的漏洞基本上是针对2.0,当然大家可以自己选择安装相应的版本。我这里讲的都是采用DSO动态编译的方法编译Apache.
至于有关apache的编译方法,可以参考我以前的文章《apache的静态/动态编译在apache+php+mysql的应用》 http://www.5ilinux.com/apache01.html
软件获取:http://httpd.apache.org/
tar zvxf apache_1.3.29.tar.gz
cd apache_1.3.29
修改src/include/httpd.h 增大最大线程数
#define HARD_SERVER_LIMIT 256
改成
#define HARD_SERVER_LIMIT 2560
保存退出编译apache
./configure –prefix=/usr/local/apache –enable-module=so –enable-module=rewrite –enable-shared=max –htdocsdir=/var/www &&
make &&
make install
#这里我们通过enable-module参数告诉设置脚本,我们需要启动so和rewrite模块,so模块是用来提DSO支持的apache核心模块,而rewrite模块则是用意实现地址重写的模块,由于rewrite模块需要DBM支持,如果在初次安装时没有编译进apache,以后需要用到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块,否则还是建议你在第一次编译的时候把rewrite模块编译好。
enable-shared=max 这个参数的作用时编译apache时,把除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内。
好了安装apache很简单的哦,启动apache看看
/usr/local/apache/bin/apachectl start
然后用ie看http://你的服务器地址。应该能看到熟悉的apache羽毛标志。
3.安装PHP4.3.4
软件获取:http://www.php.net/downloads.php
tar zvxf php-4.3.4.tar.gz
cd php-4.3.4
./configure \
–prefix=/usr/local/php \
–with-mysql=/usr/local/mysql \
–enable-force-cgi-redirect \
–with-freetype-dir=/usr \
–with-png-dir=/usr \
–with-gd –enable-gd-native-ttf \
–with-ttf \
–with-gdbm \
–with-gettext \
–with-iconv \
–with-jpeg-dir=/usr \
–with-png \
–with-zlib \
–with-xml \
–enable-calendar \
–with-apxs=/usr/local/apache/bin/apxs
make
make install
#我这里由于服务器需要用到GD库,所以加了一些支持GD的编译参数,GD直接用了redhat自带的GD库,大家没有安装的话可以从安装盘安装,注意除了安装GD以外,还要安装libjpeg,libpng等库文件。另外–with-mysql=/usr/local/mysql指向你安装mysql的路径。–with-apxs指向apache的apxs文件的路径。
vi /usr/local/apache/conf/httpd.conf
查找
在此范围添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
然CPOPY PHP的配置文件
cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini
修改php.ini文件
register_globals = On

ok!重新启动一下apache服务器
/usr/local/apache/bin/apachectl restart
然后写个php测试页info.php:内容如下
phpinfo();
?>
正常的话,应该能看到php的信息了,恭喜你的Apche+Mysql+PHP安装成功。

黑客攻破SQL服务器系统的十种方法

0

分类 : 技术文摘 | 发表时间 16-04-2006

无论是使用手工试探还是使用安全测试工具,恶意攻击者总是使用各种诡计从你的防火墙内部和外部攻破你的SQL服务器系统。既然黑客在做这样的事情。你也需要实施同样的攻击来检验你的系统的安全实力。这是理所当然的。下面是黑客访问和攻破运行SQL服务器的系统的十种诡计。

  1.通过互联网直接连接

  这些连接可以用来攻击没有防火墙保护、全世界都可以看到和访问的SQL服务器。DShield公司的端口报告显示了有多少系统在那里等待遭受攻击。我不理解允许从互联网直接访问这种重要的服务器的理由是什么。但是,我在我的评估中仍发现了这种安全漏洞。我们都记得SQL Slammer蠕虫对那样多的有漏洞的SQL服务器系统造成的影响。而且,这些直接的攻击能够导致拒绝服务攻击、缓存溢出和其它攻击。

  2.安全漏洞扫描

  安全漏洞扫描通常可以基本的操作系统、网络应用程序或者数据库系统本身的弱点。从没有使用SQL安全补丁、互联网信息服务(IIS)设置弱点到SNMP(简单网络管理协议)漏洞等任何事情都能够被攻击者发现,并且导致数据库被攻破。这些坏蛋也需使用开源软件、自己制作的工具软件或者商业性工具软件。有些技术高手甚至能够在命令提示符下实施手工黑客攻击。为了节省时间,我建议使用商业性的安全漏洞评估工具,如Qualys公司的QualysGuard(用于普通扫描)、SPI Dynamics公司的WebInspect(用于网络应用程序扫描)和下一代安全软件公司的“NGSSquirrel for SQL Server”(用于数据库扫描)。这些工具软件很容易使用,提供了最广泛的评估,并且可以提供最佳的结果。图1显示了你可能发现的一些SQL注入安全漏洞。


  3.列举SQL服务器解析服务

  在UDP端口1434上运行,这能让你发现隐蔽的数据库实例和更深入地探查这个系统。Chip Andrews的“SQLPing v 2.5”是一个极好的工具,可用来查看SQL服务器系统并且确定版本编号。你的数据库实例即使不监听这个默认的端口,这个工具软件也能发挥作用。此外,当过分长的SQL服务器请求发送到UDP端口1434的广播地址的时候,会出现缓存溢出问题。
  4.破解SA口令

  攻击者还可以通过破解SA口令的方法进入SQL服务器数据库。遗憾的是,在许多情况下不需要破解口令,因为没有分配口令。因此,可以使用上面提到的一种小工具SQLPing。Application安全公司的AppDetective和NGS软件公司的NGSSQLCrack等商业性工具软件也有这种功能。

  5.直接利用安全漏洞攻击

  使用图1显示的Metasploit等工具软件可以直接实施攻击。这种软件的商业性软件“CANVAS”和“CORE IMPACT”等能够利用在正常的安全漏洞扫描过程中发现的安全漏洞实施攻击。这是非常有效的攻击手段,攻击者可利用这种手段突破系统、从事代码注入或者取得非经授权的命令行访问权限。

  6.SQL注入

  SQL注入攻击可以通过没有正确验证用户输入的前端网络应用程序实施。包括SQL指令在内的异常的SQL查询可以直接注入到网络URL(统一资源定位符)中,并且返回一些错误通知,执行一些指令等等。如果你有时间的话,这些攻击可以手工实施。我一旦发现一个服务器有一个潜在的SQL注入安全漏洞,我喜欢使用一种自动的工具深入研究这个漏洞。这些工具包括图3显示的SPI Dynamics公司的SQL注入器等。


  7.SQL盲注攻击

  这些攻击以标准的SQL注入攻击相同的基本方式利用网络应用程序和后端SQL服务器的安全漏洞。最大的区别是攻击者收不到以错误通知形式从网络服务器发回的信息。这种攻击由于涉及到猜口令,速度要比标准的SQL注入攻击慢一些。在这种情况下,你需要一种比较好的工具。那就是图4显示的Absinthe工具。



  8.对系统实施逆向工程

  逆向工程的方法可以查找软件的安全漏洞和内存损坏弱点等漏洞。在利用软件安全漏洞方面,可以参考Greg Hoglund和Gary McGraw合著的“如何破解代码”一书,你可以发现有关逆向工程方法的一些讨论。

  9.Google hacks

  Google hacks利用Google搜索引擎不同寻常的力量搜出可公开访问的系统泄漏出来的SQL服务器的错误,如“Incorrect syntax near”(附近语法错误)。Johnny Long编写的“Google Hacking Database”数据库中一些Google的查询项目。(查看错误信息和包含口令的文件部分)。黑客能够使用Google找到口令、网络服务器中的安全漏洞、基本的操作系统、公开提供的程序以及其它能够用来攻破SQL服务器系统的东西。通过Google网站的“site:”操作符把这些查询结合在一起同场可以发现你想不到能够找到的东西。

  10.熟读网站源代码

  源代码还能够暴露可能导致SQL服务器被攻破的信息。特别是开发人员为了简化身份识别过程把SQL服务器身份识别信息存储在ASP脚本中的情况下更是如此。手工评估或者Google能够在一瞬间就发现这个信息。

MSSQL扩展存储后门

0

分类 : 系统安全 | 发表时间 08-03-2006

Author: lake2 ( http://lake2.0×54.org )
注:本文发表于《黑客防线》2006年第2期
继WebShell、FTPShell之后,让我们再来玩玩SQLShell 吧。
使用数据库考虑最多的就是速度和效率,所以呢,数据库系统就使用了存储过程这种机制来提高速度和效率。SQL Server 2000 支持5种类型的存储过程,这里我们主要说说SQL Server的扩展存储过程,因为我们要利用它做后门。
看看书上对扩展存储过程的定义:

在SQL Server 2000环境之外的动态链接库称为扩展存储过程,其前缀是xp_。虽然这些动态链接库在SQL Server环境之外,但是它们可以被加载到SQL Server系统中,并按照使用存储过程的方式执行。

呵呵,最典型的扩展存储就是SQL Serve自带那个xp_cmdshell,真是杀人灭口居家旅行必备良药啊。那个扩展存储需要sysadmin权限才能执行,一旦执行了CMD,那可是MSSQL的权限哦,而MSSQL是以服务启动的,也就是System权限,嘿嘿,比管理员大叔的权力还大!
为了安全起见,一般管理员大叔都是删除了xp_cmdshell过程的,更有甚者直接删掉带有xp_cmdshell的文件xplog70.dll。这样多不好啊,我们没得玩了。
我的后门思路就放在扩展存储过程上面,因为扩展存储是以dll方式存在,而且那个dll是用C++编写且可以任意调用API函数。这样我们就可以写一个执行CMD的扩展存储(最初我是想直接修改xplog70.dll中xp_cmdshell的名字,不过失败了,在此略过略过)。
扩展存储过程可在VC里创建。创建扩展存储过程的工程之后,VC会自动生成一个扩展存储过程模板,稍稍看看,你就很容易上手了(MS真是想得周到啊)。
这里我主要是去掉了返回值,增加了一个ShellExecute函数用于执行cmd。ShellExecute函数可是一个比较有用的函数,它可以根据后缀自动选择相关联的程序打开文件。
以下是其用法:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);

第一个参数是句柄,在这里不用;第二个参数是对文件的动作,这里选“open”;第三个参数是执行的文件,这里自然是cmd.exe了;第四个参数是命令行参数,这个填程序接收到的参数;第五个参数是默认目录,把它空着;最后一个参数是程序运行时的显示方式,MSSQL都是以服务启动的,这里即使是最大化显示管理员大叔也是看不到的。
好了,所以我们的函数使用为:ShellExecute(0,”open”,”cmd.exe”,spParam,NULL,SW_SHOW);spParam是从扩展存储过程得到的参数,具体的实现请看源代码;扩展存储的编写请参阅MSDN。
ShellExecute有个坏处就是看不到回显,不过这里把权限拿到了,不要回显也无所谓。当然你也可以自己写个显示回显的扩展存储过程。
Ok,扩展存储命名为xp_lake2,dll文件名为xplake2.dll,现在让我们把它注册到SQL Server:
USE master
EXEC sp_addextendedproc ‘xp_lake2′, ‘xplake2.dll’

注意,添加扩展存储过程要求连接SQL Server的帐户有sysadmin权限;使用相对路径的话得把dll文件放到SQL Server目录的binn之下。
好啦,我们可以试试效果了,调用的参数跟xp_cmdshell一样,只是没有回显。在查询分析器里调用它:
USE master
EXEC xp_lake2 ‘net user > c:\lake2.txt’

赶快去C盘看看有没有生成lake2.txt吧!至于权限嘛,呵呵,当然是system啦。
SQL Server的扩展存储都要求sysadmin才能执行,不爽,让我们给它改改,让public也可以玩。
如果拿到图形界面用企业管理器就可以轻松搞定,只需把xp_lake2的Exec权限赋给public就ok了。在查询分析器里就用GRANT:
GRANT exec
On xp_lake2
TO public

然后换一个普通的SQL Server用户调用xp_lake2试试,执行命令还是system权限哦。呵呵,在webshell里试试吧,结果也一样的。以下是利用海洋2006调用这个扩展存储过程的截图:


因为返回的值是空,所以显示出错,但是命令是执行了的,现在命令行下用net user看看吧:


好啦,文章到此结束,大家赶紧去留自己的SQLShell吧^_^
dll可以在这里下载到:http://www.0×54.org/lake2/program/xplake2.dll

SQL盲注攻击技术综述(1.0)

0

分类 : 娱乐休闲 | 发表时间 04-03-2006

信息来源:安全焦点
文章提交:kaivalya (money_at_sjtu.edu.cn)

本文对目前SQL注入攻击中使用的盲注技术进行了综述。本文首先介绍了普通SQL注入技术的定义和危害,回顾了几种已被提出的针对SQL注入的解决方案及其各自的缺点,然后讨论了在错误信息被屏蔽或掩饰的情况下探测SQL注入漏洞是否存在所需的服务器最小响应,以及如何确定注入点和正确的注入句法并构造利用代码。最后本文还以UNION SELECT语句为例,详细介绍了利用该语句在盲注条件下统计数据表的列数和判断列的数据类型的方法和步骤。本文中给出的例子都是针对Microsoft SQL Server和Oracle的,但同样的技术也可以被应用到其他数据库系统。本文的目的是明确应用程序级别的漏洞只能通过应用程序级别的方案才能解决,仅仅依靠屏蔽错误信息来回避SQL注入攻击是无益的。

javaphile-blind_injection_survey.pdf

无觅相关文章插件,快速提升流量