MYSQL编程:根绝平安隐患 简单无视的Oracle平安成绩...
无疑希望员工得到系统、有深度的培训,显然MySQL在这一点上还做得很不够。oracle|平安|平安隐患|成绩数据库平安成绩一向是人们存眷的核心之一,我们晓得一个企业大概机构的数据库假如遭到黑客的打击,而这些数据库又保留着十分主要的数据,象银行、通讯等数据库,成果将不可思议。Oracle数据库利用了多种手腕来包管数据库的平安性,如暗码,脚色,权限等等。 作为Oracle的数据库办理员都晓得,数据库体系典范安装后,一样平常sys和system和internal这三个用户具有默许的口令,数据库安装乐成后,体系办理员作的第一件事情就是修正这些用户的口令,包管数据库的平安性。但是,浩瀚办理员常常无视了个中的一个平安成绩,上面我们就将具体会商这个成绩。Oracle数据库体系假如接纳典范安装后,除创立后面先容的几个用户外,别的还主动创立了一个叫做DBSNMP的用户,该用户卖力运转Oracle体系的智能代办署理(IntelligentAgent),该用户的缺省暗码也是“DBSNMP”。假如健忘修正该用户的口令,任何人都能够经由过程该用户存取数据库体系。如今我们来看一下该用户具有哪些权限和脚色,然厥后剖析一下该用户对数据库体系大概酿成的丧失。
启动SQL/PLUS程序,利用该用户登录进进:
SQL>select*fromsession_privs;
CREATESESSION
ALTERSESSION
UNLIMITEDTABLESPACE
CREATETABLE
CREATECLUSTER
CREATESYNONYM
CREATEPUBLICSYNONYM
CREATEVIEW
CREATESEQUENCE
CREATEDATABASELINK
CREATEPROCEDURE
CREATETRIGGER
ANALYZEANY
CREATETYPE
CREATEOPERATOR
CREATEINDEXTYPE
能够看到该用户不是SYS或SYSTEM办理用户,但是,它却具有两个体系级权限:UNLIMITEDTABLESPACE和CREATEPUBLICSYNONYM。
看到这两个权限你应当即刻想到,这些都是平安隐患,特别是UNLIMITEDTABLESPACE,它是损坏数据库体系的打击点之一。假如这时候候你还仍然以为,即便有人使用这个没有修正的口令登录进数据库也形成不了甚么丧失的话,我就不能不提示你:该用户具有UNLIMITEDTABLESPACE的体系权限,它能够写一个小的剧本,然后歹意将体系用渣滓数据填满,如许数据库体系也就没法运转,并将间接招致终极的瘫痪。今朝良多数据库体系都请求7X24的事情,假如呈现了体系用渣滓数据填满的情形,那末,等数据库体系恢复时,生怕不成挽回的丧失已形成了。
为了包管Oracle数据库体系运转的相对平安,激烈倡议数据库办理员修正该用户的默许口令,不要为不怀美意的人留下“便利之门”。MySQL采用双重授权(DualLicensed),它们是GPL和MySQLAB制定的商业许可协议。 对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。 是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。 比如日志传送、比如集群。。。 如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录. 不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理? 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
页:
[1]