mysql数据库范文

时间:2023-12-06 15:44:09

mysql数据库

mysql数据库篇1

关键词:MySQL数据库;并发事件;数据控制

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2013)34-7672-03

迅速发展的计算机技术将人们带入具有信息化社会特征的21世纪,在这样一个全新的环境下,人们的生活、工作都越来越离不开信息系统。与此同时,侵入计算机系统、计算机财产犯罪等计算机犯罪现象也日益增多,而信息系统中价值高、重要的信息也面临着严峻的安全问题,因而信息系统的安全性以及数据库对并发时间的处理和控制能力都越来越受到社会的关注,系统信息的安全性保证已经是信息安全研究中必须要考虑的问题。

1 MySQL 数据库系统

SQL数据库具有速度快、健壮、支持多用户使用以及操作性强等特点,并具有通过客户机/为各种操服务器结构的形式为操作系统提供关系数据库系统的功能,是一种公布形式的数据库管理形式。若干不同的库和客户端以及一个服务器守护程序MySQLd构成了MySQL的基本组成结构,多个应用程序都可以通过它得到编程接口,也因此使各种将客户端应用程序的开发变得更为便利。

由服务器管理的数据库和表以层次结构方式存放在Datadir中,Windows文件系统和UNIX操作系统的树形结构都可以将这种层次结构表示出来:(1)数据库中的表格与数据库中的目录中的文件相对应,并能够在数据库目录下形成格式描述文件,即FRM,数据文件.MYO和索引文件。这三个文件都用来存放数据库中的每一个表格。(2)每个数据库目录下的一个目录与这个数据库相对应并以数据库名存放在Datadir之下。

2 MySQL 安全机制

由于数据库中可能会存在于个人、企业甚至是国家至关重要的数据信息,所以数据库的安全性也就变得至关重要,并在社会中受到越来越多的关注。与大多数数据库开发商一样,MySQL数据库的开发商也在不断改善数据库的安全性,其安全机制因而也得到了极大的改善与提高。在目前国内外有关MySQL数据库安全性的文献中,都提到其主要保护措施是密码保护,即在登陆数据库时需要提供口令。设置权限系统的访问控制的初衷是为了只允许通过认证的用户进行访问,从而提高数据库的安全性。而在MySQL数据库中,正是通过事先设置的权限表来控制访问数据库的客户机。

2.1 访问控制

MySQL的安全机制较为简单但也十分有效,经过认证的有权访问的用户在经MySQL数据库管理员的允许可以对数据库中的记录进行查询,这就是MySQL数据库的安全性职责。这种形式的保护既包括内部保护也包括外部保护。

2.2 MySQL 内部安全机制

MySQL的内部安全机制中最需要考虑的问题是要考虑到文件系统的级别,这也正是其中最主要的一个问题。运用这一安全机制可以有效防止具有运行MySQL服务器权限的用户供给MySQL的数据目录。然而,要是MySQL数据库管理人员并不严格按照要求对MySQL数据目录中的文件进行授权的话,就会导致这些文件之间的嘴硬出现简单的替换。一旦出现此类情况,MySQL内部的安全机制就无法再为客户的授权提供正确控制的保证。

因而,在用操作系统的权限对文件系统进行权限设置的过程中,需要严格按照规定要求,并要由特定的MySQL管理小组对MySQL用户进行专门的管理,从而保证每个数据目录都仅有一名用户有权对它进行访问。

2.3 MySQL 外部安全机制

设置MySQL授权表可以阻止客户对MySQL服务器的攻击,并保证只有合法的系统用户才具有数据库中数据的访问权限的机制,被称为MySQL外部安全机制。

在MySQL的数据库授权表中,具有user,db,tables priv,hosty以及solumns priv等多种形式的表格。当MySQL系统首次进行安装时,这些授权表格就会进行初始化过程。而在通过网络而链接到此MySQL服务器的所有客户机都将有权限通过对这些授权表格的控制而访问MySQL数据库。

在user表格中,清晰地列明了有权访问此服务器的用户及其相对应的密码,并对这些用户的权限做出了清楚的说明。User表格中的权限属于全局权限,并在整个数据库汇总都具有其作用。

db表格对所有的数据库以及每个数据库的有权访问用户都做了说明,而db表格中的权限适用于数据库中的所有的表。

host表在使用时往往与db表格进行联合,在更高的级别上管理和控制特定客户机的访问权限,它使用时较为自由,不会受到GRANT以及REVOKE或其他形式的语句的影响。

tables prive表具有制定数据库中表的权限的功能,其中制定的权限使用于整个表中的任何列。

Columns prive表则对数据库中的每一列的权限进行指定。其中制定的权限只对该表中的某一列适用。

此外,授权表的列具有确定用户权限的权限列和确定某权限有效时间的范围的两种类型,对于表和数据的权限主要有以下几种,包括可以用ALTER TABLE语句,即ALTER;可以删除数据库和表,但是无法对索引进行删除,即DROP;能够进行数据库和表的创建但不能进行索引建立,即REATE;既能创建也可以删除索引,即INDEX;可以对表中的现有记录进行删除,即DELETE;能通过SELECT语句最表中数据进行查询,即SELECT;可以更改已有记录,即UPDATE。管理权限则主要包括SHUTDOWN、FILE、 GRANT、 RELOAD等,即可以通过MySQLadmin shutdown 将服务器关闭;能够读写服务器主机上的文件;可以将自己拥有的权限分给别人使用;可以对服务器的管理命令进行执行。

在对MySQL服务器进行访问时,其访问过程可以划分为两个阶段。客户机与服务器进行连接是第一个阶段。服务器对授权表中的user表进行查询,寻找符合要求的数据项,即能够与当前用户名及其所提供的密码相一致,如果找不到符合这个要求的对象连接失败,如若找到,便可以与服务器建立成功的连接,并由此进入到第二个阶段。在第二阶段中,MySQL服务器会通过授权表格对客户机发出的命令请求进行审核,由此确定次用户是否有权限进行命令请求的执行,直至服务器与客户机的连接断开,这种核对才会结束。

2.4 数据库的维护与数据库的修复

MySQL数据库中对表的检查和维护的过程主要有以下四个步骤:

一是对发生错误的表进行检查。在对表的检查过程中如果顺利通过的话,任务就成功完成,相反,如果不能通过,那么就必须采取措施对出错的表进行修复。

二是在修复出错表之前对表进行拷贝,备份储存,以防止数据的丢失。

三是对出错的表进行修复工作。

四是如果无法对表进行成功的修复,就需要采用更新的日志文件和备份的数据库对表进行进一步修复。

当数据库进行了数据备份和日志更新有效的前提下才能采取以上四个步骤来对数据库进行修复。在这两个条件都不具备的情况下, MySQL数据库系统就会面临很大的风险。

2.5 数据库备份与数据库恢复

目前,主要有两种常见方式可以对数据库进行备份。一种是可以对数据库文件进行直接的拷贝备份,虽然这种方式不需要MySQL系统的支持作为基础,但是它有个前提保证,就是在进行备份的过程中不能出现其他用户对被备份的数据进行修改的情况。另一种则是通过MySQL dump程序进行数据的备份,这种方法需要在与MySQL服务器共同运行的前提下才能采用。而在备份数据的过程中也需要注意五方面的事项。一是要定期进行数据的备份。二是在备份时要执行更新日记。这样一来,尽管我们使用的是通过备份文件进行还原的数据库数据,但也可以通过执行更新日记的查询对瘫痪深刻的数据库中的表的状态进行查询。这是因为数据库备份文件在文件系统的备份语言中表示完全转储,而更新日志则只表示增量转储。三是要对更新日志进行备份,这是为了在MySQL服务器中包含数据库备份的磁盘驱动器也受到损坏的情况下可以采取补救措施。四是应该在不同的文件系统中存放备份的文件和数据库,这样可以降低声称的备份文件填满含有数据字典的文件系统的可能性。五是要注意对就日志文件进行保存的数量和日志文件循环的频率要根据为保持旧日志所提供的磁盘空间的大小和服务器的工作状况决定。

在MySQL服务器中的数据库都完全毁坏的情况下,我们要尽快对数据库进行补救和恢复工作。备份文件和更新日志都是属于这一过程。通过对文件进行备份,对表进行恢复并将其恢复到其该备份时候的状态。而当备份进展到发生故障的时段时,其对表进行修改的结果也会随之丢失。但是我们依旧可以依据更新日志的内容对数据库表进行修改的所有结果进行查询,并利用更新日志将MySQL的输入进行重新的查询。

3 利用ODBC API实现MySQL数据库功能调用

开放式数据库互联,即我们常说的ODBC(Open Database Connectivity),它是Windows开放性结构的重要组成部分之一,并对数据库制造商提供的驱动程序有较强的依赖性。在对ODBC API进行使用的过程中,Windows的ODBC管理程序先寻找到正确的驱动程序,再给该驱动程序进行访问请求的传递,在接收到命令后,该程序就会通过SQL语言对DBMS进行相关指示,并使其完成数据库访问工作。在Windows下,在安装ODBC数据库的前提下,多种数据库都可以通过ODBC进行数据库连接以达到访问它们的数据的目的。

MySQL数据库制造商也为其提供了相应的ODBC驱动程序,myodbc-2.50.31-win95是它至今为止最新的版本。通过ODBC API,在WIN98环境中它可以利用编程语言进行ODBC所支持的各项操作。即便是在各种数据库被ODBC屏蔽的情况下,一些其他程序也可以通过ODBC进行对MySQL数据库的各项操作。可见,OBDC有助于提高程序对数据库的通用性。

4 利用MySQL自带的C API函数实现数据库功能调用

各个数据库间存在的差异导致它们提供的数据库的功能间也存在极大的差异。如此一来,即便是通过ODBC API也无法使一个系统具备所有数据库都具有的数据库功能,从而对程序对数据库的控制能力产生负面影响,也使数据库的能力无法得到充分的发挥。且损失效能力是这种统一的接口的前提,这都在一定程度上导致了数据库操作时间的延长。因而,解决这些问题已是刻不容缓的事情。MySQL的制造商也认识到了解决这一问题的重要性,数据库不仅提供ODBC驱动程序,还提供各种编程环境下的API,CAPI也包括其中。实践证明,这些API函数可以充分发挥数据库的能力,从而减少数据库操作所需要的延长时间,但是它却也带来了不良的影响,即对程序的通用性造成了严重的影响。

一组函数和一组运用于函数的数据类型共同构成了MySQL数据库提供的一整套C API函数。C API函数可以在这些函数与MySQL服务器进行通信和数据访问的过程中对数据库进行直接操控,从而有效地提高操控的效能。

行集、查询返回结果集、字段信息、数据库连接句柄、字段表的偏移量、自定义的无符号整型数等都是C API数据的类型,即MYSQL ROW、MYSQL RES、MYSQL FIELD、MYSQ、MYSQL FIELD OFFSET、my ulonglong。另外,MySQL connect()、MySQL init()、MySQL close()、MySQL query()、MySQL store result()等函数都是C API提供的函数,其中MySQL query()是最为重要的函数,具有完成绝大部分数据库操控的作用。

参考文献:

[1] 李荣国,王见.MySQL数据库在自动测试系统中的应用[J].计算机应用,2011(31):169-171.

[2] 宋国柱,陈俊杰.基于Mysql数据库的智能DNS系统的设计与实现[J].计算机工程与设计,2009(24): 5771-5773.

[3] 邵志远,金海,唐晓辉.基于主动TCP连接复制的高性能高可用MySQL数据库集群[J].计算机研究与发展,2005,42(6):1006-1012.

mysql数据库篇2

关键词:MYSQL;备份;修复

中图分类号:TP313文献标识码:A文章编号:1009-3044(2012)17-4046-02

Analysis on MYSQL Database Backup and Recovery

TIAN Juan

(Information Engineering Department, Karamay Vocational &Technical College,Karamay 833600,China)

Abstract: MYSQL database backup、inspection、and repair every information management should be an essential ability to grasp the MYSQL database management skills will make your work more with less. Maintenance of years of database experience, describes some of the database backup, inspection, repair methods and techniques.

Key words: MYSQL Based; backup; repair

1 MYSQL数据库简介

MYSQL是一个多线程的,结构化查询语言(SQL)数据库服务器。SQL在世界上是最流行的数据库语言。它支持不同的操作系统,并且其执行性能和运行速度都非常高,非常容易使用,是一个很捧的数据库。尤其是开放源码这一特点,目前被已经广泛地服务于各种行业中。因此,MYSQL数据库的管理和维护已经成为每一位信息管理人员日常工作的重要部分,数据库的备份、检查、修复等成为必修课。

2数据备份与恢复的重要性

很多用户都有过丢失宝贵数据的经历,随着大量的数据被存入到MYSQL数据库中,再加上错误地使用DROP DATABASE命令、系统崩溃或对表结构进行编辑等操作,都可能酿成灾难性的损失。另外,目前大部分的网站如果发生数据库中的数据丢失或服务器长时间的失去响应,轻则需要花费大量的时间、人力和金钱进行数据恢复;重则永久失去所需数据,影响网站的正常运作。所以,对数据库进行备份,以备在出现意外时及时进行恢复是非常必要的。

3 MySQL数据库的备份与恢复

3.1使用mysqldump程序备份恢复

MYSQL有一个内建的命令行工具——Mysqldump,它可以和MYSQL服务器一起创建一个独立的,包含有数据库数据的文该文件。

3.1.1备份

使用Mysqldump进行备份时我们使用如下命令:

mysqldump–u用户名–p密码数据库名>备份数据库路径

MySQL会使用用户名、密码和主机来检查用户是否具备对该数据库的访问权限。完成权限检查后,MYSQL会在指定的位置输出Mysqldump命令指定的文件。加上适当的参数就可以根据不同的需要完成数据库的导出。例如:-h、-P、-add-drop-database等。

如果数据库里的某些表更新非常频繁,那么用户可以只备份一个数据库中的更新频繁的表,而不必将整个数据库进行备份。命令如下:

mysqldump数据库名表1名表2名表3名……>备份数据表路径

3.1.2恢复

mysqldump–u用户名–p(密码)–h主机名还原数据库名数

3.2直接拷贝备份与恢复

备份数据库最为快速、直接、方便的方法当然还是直接拷贝数据库文件。假设服务器关闭或已经锁定了你想拷贝的表,下列显示如何将整个stuinfo数据库备份到一个备份目录(DATADIR表示服务器的数据目录):

%cd DATADIR

%cp–r stuinfo /usr / archive/mysql

单个表可以如下备份.

%cd DATADIR/stuinfo

%cp member * /usr /archive /mysql /stuinfo

%cp score * /usr /archive /mysql /stuinfo

这里有两个问题需要提醒大家注意。一是在直接拷贝备份时,必须保证被备份的数据库没有在使用。如果你在服务器对表作出修改的时候拷贝它,那么你的备份也就失去了意义。这样只有先关闭服务器,然后拷贝数据库,再重启服务器。二是要直接把一个数据库文件从一台电脑拷贝到另一台电脑上,只需要将该数据库拷贝到另一台服务器主机的适当数据目录下即可。但是要确保该数据库文件是MyIASM格式或确保两台电脑的硬件结构相同,否则你拷贝的数据库在另一台主机上会出现问题,这种方式同样需要保证在服务器没有对数据库进行修改的时候进行。

3.3使用工具备份恢复

L)PHPMYADMIN是一款在线管理工具,目前已经应用得非常广泛,它提供了从数据库权限分配到数据库远程备份打包下载的日常所需要的大部分功能。

2)SQLyog是一款多功能的MySQL客户端,可以在服务器或本地进行安装使用,它提供了全部我们需要的功能(除数据表损坏修复),不但能方便地完成远程查询,还能将我们查询的结果

导出成为我们需要的文件格式,方便提取数据报表。同时,对不同字符集的支持比较全面。对于MySQL管理员或开发人员来说,它能完成触发器、存储过程代码的编写是一款非常出色的MYSQL远程管理利器。

4结束语

MySQL的备份与恢复的方法有很多,该文介绍的是windows下几种常用的方式,其他的操作系统与此在原理上类似。采用合适的策略备份和恢复数据,可以在数据出现问题时,从容应对,将损失降到最低。

参考文献:

[1]波诺赛克.Web开发入门经典——实用PHP6、Apache和MySQL[M].北京:清华大学出版社,2009.

[2] MySQL 5.1中文参考手册(电子版).

mysql数据库篇3

关键词:infobright;mysql整合;数据仓库;高数据压缩比

   一、技术概况

infobright进行复杂的查询时,通过其专利的知识网格(knowledge grid)和综合优化技术,能够实现优异的性能表现。数据在导入infobright之后将被高度压缩并以“数据块 (data pack)”的形式存储,于此同时,知识网格会自动创建一个非常紧凑的元数据,其中包含了统计数据和数据块之间的关系信息。因此当接收到查询时,infobright查询优化器可以通过元数据智能的决定哪些数据块与查询请求相关,并将之解压。基于知识网格技术,infobright不需要专门对数据进行划分,也不需要建立索引,从而节省查询处理时间,提升响应速度。 

基于列的数据架构 infobright实施、管理非常简便,不需要人工调试、数据分区和创建索引,有效的降低了管理成本,此外infobright不需要运行在特殊的专用硬件上,同时它的数据压缩比很高(10:1—40:1),比任何其他数据仓库系统对存储设备的占用都小。这些特性让infobright为企业it部门降低了预算上的负担。

二、功能

infobright 企业版——分析型高性能数据仓库

在随时在线的今天,需要进行业务分析的数据规模惊人增长。商业决策需依托海量数据的实时访问,企业才能保证正确方向。

infobright是一个基于独特的专利知识网格技术的列式数据库,能够降低您90%的管理工作量。使用infobright不需要创建特殊的数据库模式,无需创建和维护索引,无需对数据进行分区,甚至不需要手动调整,知识网格就会在原始数据导入时,自动创建和维护数据,并用以优化每一个查询。在一台pc服务器上,infobright企业版在对50tb甚至更多数据量进行多并发复杂查询时,能够显示出令人惊叹的速度,相比于mysql,其查询速度提升了数倍甚至数十倍。在同类产品中,infobright的单机性能处于领先地位。

三、高数据压缩比

1.行业领先的数据压缩技术

如果您的系统数据量每天都在快速增长,受限于磁盘的容量与传输速率,您进行备份的成本与时间将快速增加,直至您无法承受。幸运的是,软件技术的发展速度超越了磁盘数据传输技术的发展速度,infobright可以将数据以10:1至40:1的比率压缩,通过知识网格与列式架构的结合,极大的提升了查询响应速度,并降低了存储成本。通过列式架构和超压缩算法,10tb的原始数据在infobright中将被压缩至1tb,对某些类型的数据,最高可以达到40:1的压缩率。并且infobright压缩的速度非常快,目前已经可以以每小时1tb甚至更快的速度向infobright导入数据,从而让您的数据仓库系统接近“实时”工作的状态。

如果您的企业正苦于应对剧增的数据规模、增长的客户需求以及较高的用户期望,同时优化it投入,infobright先进的数据库技术就可能帮助到您。让您的it团队能专注于快速完成业务交付而非基础架构,才能创造更大商业价值。

2.mysql整合

(1)与mysql整合

infobright是基于mysql开发的分析型数据库,mysql原有用户可以通过infobright得到理想的数据仓库解决方案,它使用mysql用户熟悉的界面,对基于mysql开发的应用不需要进行改动,就可以无缝升级到infobright。与mysql相兼容的bi工具及etl工具,infobright都能完美支持。

三、技术特性

sql支持 全面支持ansi sql-92标准和sql-99扩展标准中view和存储过程的部分

1.灵活的schema支持。支持所有schema设计;

2.行业标准接口。

支持标准数据库接口,包括odbc、jdbc和本地连接;

3.api接口支持  支持的api接口包括c、c++、c#、borland delphi (via dbexpress)、 eiffeel、smalltalk、 java (with a native java driver implementation), lisp, perl, php, python, ruby, realbasic, freebasic, and tcl;

4.dml支持。支持dml语句(insert、update、delete);

5.并发用户数。支持至多500个数据库用户,32个并发查询(视cpu核心数与内存大小而定);

6.操作系统支持。windows server 2003/2008 (64-bit, 32-bit), solaris 10 (64-bit), red hat enterprise linux 5 (64-bit),novell suse linux enterprise 10, red hat enterprise linux 5 advanced server (64-bit),debian ‘lenny’ (64-bit), or centos 5.2 (64-bit)

7.处理器支持。最少4g内存的intel和amd x86架构服务器(建议16g内存或更多)

8.数据导入方式支持。infobright企业版支持两种数据导入方式。通过文本方式向mysql中导入,或通过文本和二进制文件的方式向infobright中导入(最高280gb/小时)。

2.在线分析

无论您的公司是在线广告网络,零售商,手机广告服务提供商或是任何其他的制造业,分析的重要性都与与日俱增,了解您网站的性能、您的客户的访问行为、评估广告和营销活动的效果,并分析成功与失败之间的差异,这能够让您企业与竞争对手拉开差距,取得最终的胜利。而这需要您对来自网页和离线方式的大量数据进行有效的利用,infobright让您能够用低成本的方式轻松获得这种能力,相比与其他类似的方案,infobright的成本低廉,管理简便,降低了您获得竞争优势的门槛。

3.数据集市(data mart)

数据集市通常定义为包含特定应用分析的数据仓库, 其分析应用与用户的业务紧耦合,具有较强的专业特性,因此通常针对集团内部某个特定的部门建设。在过去几年里,数据集市系统的实施数量快速增长,这种增长是由商业用户快速查询的需求驱动的。

过去数据集市项目由集团的it部门统一实施,而现在,越来越多的集团内部用户部门自行实施数据集市项目,并由内部it经理担任实施负责人,以确保数据集市的功能与需求吻合。

四、infobright几大优点:

1.高压缩比率,平均压缩比可达10:1,甚至可以达到40:1,我用infobright把3.1g的数据存成不足300m。

2.列存储,即使数据量十分巨大,查询速度也很快。用于数据仓库,处理海量数据没一套可不行。

3.不需要建索引,就避免了维护索引及索引随着数据膨胀的问题。把每列数据分块压缩存放,每块有知识网格节点记录块内的统计信息,代替索引,加速搜索。

4.单一台服务器可以高效地读写30t数据。具有可扩展性,这里是指对于同样的查询,当数据量是10t时,它耗费的时间不应该比1t数据量时慢太 多,基本是一个数量级内。

与mysql对比:

1.infobright适用于数据仓库场合,即非事务、非实时、非多并发;分析为主;存放既定的事实(基本不会再变),例如日志,或汇总的大量的 数据。所以它并不适合于应对来自网站用户的请求。实际上它取一条记录比mysql要慢很多,但它取100w条记录会比mysql快。

2.mysql的总数据文件占用空间通常会比实际数据多,因为它还有索引。infobright的压缩能力很强大,按列按不同类型的数据来压缩。

3.服务形式与接口跟mysql一致,可以用类似mysql的方式启用infobright服务,然后原来连接mysql的应用程序都可以以类似的 方式连接与查询infobright。这对熟练mysql者来说是个福音,学习成本基本为0。

infobright有两个版:开源的ice及闭源商用的iee。ice提供了足够用的功能,但不能 insert,delete,update,只能load data infile。iee除提供更充分的功能外,据说查询速度也要更快。

五、不足之处

不支持数据更新:社区版infobright只能使用“load data infile”的方式导入数据,不支持insert、update、delete

不支持高并发:只能支持10多个并发查询

参考文献:

[1]blog.s135.com/infobright/

[2]actionsky.com/infobright/?bdclkid=fgu_j5nppoo1yvgffipymhwiw7tk0gscfqe_15odworp

mysql数据库篇4

【关键词】MYSQL;MSSQL;安全分析;漏洞探测

动态网站的安全是关系到网站是否正常运行的根本,而企业内部客户信息等数据的安全更是其命脉所在,这些数据通常都保存在网站的后台数据库中,那么安全可靠的数据库是至关重要的。目前中小型企业多使用MYSQL和MSSQL作为后台数据库。

本文将从数据库系统的用户权限、目录权限、漏洞探测和密码窃听四个方面对MYSQL和MSSQL数据库做安全性分析。

1.测试环境

Windows server 2003网络操作系统,默认系统管理员账户,在IIS6.0上配置网站和FTP服务器,系统支持asp,,PHP。安装有MySql5.1和SQL server2008数据库系统。

2.数据库安全性分析

2.1 用户权限

(1)当你试图联接一个MySQL服务器时,身份检查使用user表中3个字段(Host,User和Password)。服务器在user表条目中匹配你的主机名和用户名,并当你提供了正确的口令才接受连接。我们通过root用户和密码,连接数据库后,使用select命令查看用户和权限。如图1所示。

图1 Mysql初始用户及权限

第一条说明可在本机使用root用密码登陆,拥有删除记录,修改记录,删除表等权限,如果密码强壮,那么,这是安全的。

第二条表示在任何主机使用root不需密码登陆,拥有删除记录,修改记录,删除表等权限,’%’在Host列里意味着“任何主机”并且是不特定的。

第三条表示在本机(localhost)匿名登陆,拥有删除记录,修改记录,删除表等权限,空白User值意味着“任何用户”并且是最不特定的。

第四条表示可以在任何主机匿名登陆,但没有任何权限。

显然,第二,三,四都是不安全的!

解决方法:如果你不需要远程维护,删除掉第二条,delete from user where host=“%”and user=“root”;或者给它加个强壮的密码。删除第三条和第四条。

(2)MSSQL数据库的权限控制是基于master库的syslogins表,拥有所有权限的帐号是sa,其他还有sysadmin,db_owner等不同权限帐号。由于SQL Server不能删除Sa这个超级用户,所以必须对这个帐号进行最强的保护,如使用非常强壮的密码。新建立一个拥有与Sa一样权限的超级用户来管理数据库,只有当其它系统管理员不可用或忘了密码时才使用Sa。定期检查所有登陆帐号,查看是否有不符合要求的密码。

如下命令检查是否有空口令帐号存在。

Use master

Select name,Password from syslogins where password is null

尽可能的删除存储扩展,防止本地用户利用存储扩展执行恶意命令。

如下命令删除xp_cmdshell扩展。

use master

sp_dropextendedproc xp_cmdshell

2.2 目录权限

(1)一般不会让服务器主机上的其它用户拥有对数据库目录文件的写访问权,但仅仅是读访问权也非常危险。由于像GRANT和SET PASSWORD这样的查询都被记录到日志中去了,常规和更新日志文件包含了有关密码的敏感查询文本。如果一个攻击具有对这些日志的读访问权,那么他只要在日志文件中查找GRANT或PASSWORD这样的敏感单词,就很容易找到密码的明文。要消除这些安全漏洞,就要安排数据库目录及其中所有文件和目录的所有权。

MySQL默认安装到c:\mysql,c盘默认everyone有读取和运行权限,由于权限的继承性,everyone对c:\mysql也有读取和运行权限,如图2所示,显然这是不安全的。

图2 windows2003默认目录用户及权限

解决方法:把mysql目录文件改为只有某个管理员账户(如windows下的adminis-trator账户)可读写。

(2)MSSQL也是安装到c盘,由于存取控制问题,最好安装到d盘等非系统盘进行严格的权限控制。而且,由于MSSQL数据库与系统结合非常紧密,系统管理员在没有数据库密码的情况下也可以通过选择windows验证来操作数据库。因此,普通用户有可能通过系统漏洞提升自己的权限,对数据库进行破坏。

解决办法:除了严格的存取限制外,还要定期查看SQL Server日志检查是否有可疑的登录事件发生。

对于MSSQL的安全是和windows系统安全紧密结合的,操作系统中帐户设置越多,安全性就越差。因此网络服务器只允许一个指定系统管理员进行管理是至关重要的。

具体要遵循如下原则:

①将唯一的系统管理员Administrator重命名,改为一个不易猜出的长名字,从而为攻击增加一层障碍。

②将Guest帐号禁用,同时重命名为一个复杂的名字,增加口令。因为guest帐号不能被删除只能改名。有的黑客工具可以利用guest账号的弱点,将帐号权限从一般用户提升到管理员权限,从而破坏系统。

③给系统管理员帐号一个复杂的口令,长度最少在8位以上,且必须同时包含字母、数字、特殊字符。其次不要使用熟悉的单词、熟悉的键盘顺序、熟悉的数字等。因为口令是黑客攻击的重点,口令一旦被突破也就无任何系统安全可言了,而这往往是不少网管最易忽视的地方。

④口令必须定期更改,且最好记在心里,除此以外不要在任何地方做记录。

⑤针对密码破译,采用Windows Server 2003提供的账号锁定功能,设定登录最大允许的出错次数,一旦登录次数超过设定次数,系统会自动锁定账号,这样致使密码破译无法进行。另外,如果在日志审核中发现某个帐号被连续尝试,则必须立刻更改此帐号(包括用户名和口令)。

2.3 服务器漏洞探测

(1)MySQL安全漏洞

例1:MySQL CREATE TABLE调用绕过访问限制漏洞。

漏洞描述:CVE ID:CVE-2008-7247

当数据主目录包含有到不同文件系统的符号链接时,MySQL的ql/sql_table.cc允许通过认证的远程攻击者通过以特殊DATA DIRECTORY或INDEX DIRECTORY参数调用CREATE TABLE绕过预期的访问限制,执行各种非授权操作。

解决方法:下载厂商补丁http:///commits/59711

例2:MySQL SELECT语句(下转第35页)(上接第24页)处理拒绝服务漏洞。

MySQL的mysqld守护程序没有正确地处理在执行某些带有子查询的SELECT语句期间所产生的错误,在执行使用GeomFromWKB函数的语句期间没有保留某些null_value标记,这允许通过认证的远程攻击者通过提交特制语句导致守护程序崩溃。

目前厂商已经了升级补丁以修复这个安全问题,到厂商的主页下载:

http:///commits/88409

http:///commits/87482

(2)默认的情况下,MSSQL则会打开TCP的1433端口监听

虽然MSSQL可以人为的改变监听端口,但是通过微软未公开的1434端口的UDP探测可以很容易知道MSSQL使用的是什么TCP/IP端口。往UDP1434端口发送一个1个字节的内容为02的数据包,被探测的系统则会返回安装的MSSQL服务信息,这些信息包括:主机名称、实例名称、版本、管道名称以及使用的端口等。这个端口是微软自己使用,而且不象默认的1433端口那样可以改变,1434是不能改变的。由于利用了UDP端口,一般的过滤是很难防范的。

解决办法:安装防火墙,或者利用Windows 2003系统的IPSEC对网络连接进行IP限制,实现IP数据包的安全性。对IP连接进行限制,只保证自己的IP能够访问,拒绝其他IP进行的端口连接,把来自网络上的安全威胁进行有效的控制。重要的是,还要对端口作过滤,包括大部分的TCP和UDP端口,因为仅仅做IP限制的话,有可能恶意攻击者先攻击被数据库服务器信任的主机,控制之后作为跳板对数据库服务器进行攻击。

2.4 密码窃听

在单机环境下,基于用户口令本身的保密性(与口令长度、复杂性等有关),可以在一定程度上防止其他用户进入系统。但在网络环境下,存在另外一种威胁:攻击者可通过窃听通信信道或进行网络窥探的方法,在口令的明文传输过程中获得用户口令,使得这种身份认证方法变得极不安全。

MySQL和MSSQL系统客户与服务器构架的一个重要问题就是通过网络传送数据时的安全问题。如果客户与服务器间的交互以纯文本形式发生,黑客就可能“嗅出”被传送的数据包,从而获得机密信息。

解决方法:可以通过激活MySQL和MSSQL系统配置中的SSL,或应用一个OpenSSH这样的安全应用来为传送的数据建立一个安全的加密“通道”,以关闭这一漏洞。以这种形式加密客户与服务器连接可使未授权用户极难查阅往来的数据。另外的办法就是将口令加密传输,现在有多种加密技术,常用的是单向函数加密技术,如在系统中使用MD5算法来实现口令的加密存储与传输。

3.总结

网站后台数据库的安全分析,目的就是保证企业内部客户信息等数据的安全和企业网站的正常运行。从上面的安全分析结果来看,网站后台数据库的安全依赖于良好的安全管理和有效的安全策略。实际上数据库的安全是一个十分复杂的工程,这里只体现了其中的几个侧面,更精深的安全管理,有待于我们在实践和应用中不断地深入研究。

参考文献

[1][美]戴尔著.李红军,李冬梅,等,译.MySQL核心技术手册[M].机械工业出版社(第2版).

mysql数据库篇5

【关键词】在线监测系统;MySQL数据库;C++builder

1.引言

对于在线监测仪来说,通常都是长时间连续运行的,数据量一般都巨大,并且需要在过程控制中实时修改运行参数,如何管理数据文件,运行条件参数和相关信息等就显得尤为重要。这需要借助专门的数据库来才能有效的管理。

近20年来,数据库技术不断发展,至今已经有很多成熟的商品化的数据库管理系统(DBMS),例如:SQL Server、Oracle和Access等,它们的应用越来越广泛,但对用户来说还存在不足之处。(a)SQL Server:SQL验证的登陆只对特定的服务器有效,也就是说,在一个多服务器的环境中管理比较困难;对于每一个数据库,必须分别地为其设定管理权限;移植性较差,不能跨平台移植;价格也不便宜;(b)Oracle:价格昂贵,服务费用也比较高;对硬件要求也比较高,使得整体投入非常高;(c)Access:主要用于单机桌面小型数据库管理系统,属于Local DBMS,难以支持大型应用;速度比较慢,功能还不够完善。

目前,采用开源数据库已开始成为一种潮流,如许多小型、中型或大型网站数据库服务器都选择MySQL数据库。MySQL是一个精巧的SQL数据库管理系统,以操作简便著称。由于其强大的功能、丰富的应用程序接口及精巧的系统结构设计,在基于数据库的应用软件开发中得到了广泛的应用。MySQL具有下述优势;(a)是目前运行速度最快的SQL语言数据库;(b)多样的数据类型和超大的容量可以方便完整地保存反映设备状态的各种数据;(c)支持多平台,可以在不同的操作系统下进行数据的准确移植;(d)可以免费获得,可以有效降低成本。

本文中在线监测系统硬件平台采用PC/104,具体如下:PC/104嵌入式主板采用SBC-4571(北京集智达公司),其是嵌入式Vortex86 CPU模块,带4串口,2个USB,支持CRT/LCD/音频/网络,板载128MB DRAM内存,1个增强IDE接口,显示屏采用元太 6.4"LCD显示屏。PC/104主板外加PC/104的I/O卡,就能方便的实现在线监测系统的控制中心。在线监测系统的软件平台为当前流行的Windows 2000操作系统上,采用MySQL数据库作为在线监测系统的数据库,应用软件在集成开发环境C++builder 6.0上开发。在此平台上研究在线设备的应用程序与MySQL数据库的连接、更新、插入,及数据库中关键字段的动态实时显示技术。本设计采用的MySQL版本为mysql-5.0.37-win32及其在windows下的驱动为mysql-connector-odbc-3.51.14-win32。下面从MySQL在线监测数据库的设计、C++ builder与MySQL数据库的ODBC连接,应用程序的设计三方面来论述。

2.MySQL在线监测数据库的设计

本设计是为了研究MySQL数据库在在线监测系统中应用的可行性,及关键技术的开发与研究。因此设计的onlinebase数据库就相对简单, 只包含一张反映在线设备运行结果的results的表。表results包括关键字段“id”、反映在线监测指标值的int类型字段“value”、反映在线监测的实时条件的int类型字段“conditon” 和在线检测指标时的备注字段“remark” 等4各字段。创建数据库onlinebase、数据表results后,可以通过命令desc results来查看表的具体描述,如图1所示。

3.C++ builder与MySQL数据库的ODBC连接

C++builder不能直接访问MySQL数据库,但可以通过ODBC来实现。因为ODBC屏蔽了各种数据库的差异,安装了MySQL数据库的ODBC驱动程序后,就可以通过ODBC对MySQL数据库进行操作。

创建ODBC源实际上就是一个写操作系统注册表的过程,可以在应用程序中实现,但为了简单方便,还是通过在操作系统中“控制面板\性能和维护\管理工具\数据源(ODBC)中创建。选择添加用户DSN,然后选择MySQL ODBC 3.51 Driver的数据源驱动,点击完成,出现图2的对话框。

在图2所示对话框中,在“Data Source Name”编辑框中输入onlineodbc,设置了ODBC数据源的名;在“description”编辑框中输入对DSN的说明;数据在“server”编辑框中输入local,设置为本地服务器;然后设置User和Password,这里以root用户访问,并输入root用户的密码;最后选择onlinebase作为数据源的数据库。点击下面的“Test”按钮可以测试通过ODBC数据源连接所选数据库是否成功。最后点击“ok”按钮,返回ODBC源数据管理器,如图3所示,就可以发现新增加的onlineodbc数据源。

图1 创建results表,

并查看results表的结构

图 2 创建onlinebase数据库的ODBC源

图3 创建onlieodbc数据源后

的ODBC数据源管理器窗口

4.应用程序的设计

C++builder6上开发的应用演示程序的功能是主要是:与MySQL数据库onlinebase的连接,并将数据表results在人机界面上动态显示;在线监测指标value字段数值也在曲线上的实时动态显示;可以在人机界面上手动添加记录,删除记录。最重要的是要模拟在线监测系统,每隔一段时间写一条results表中的记录,能在相应的显示表中和曲线中实时更新,动态显示。最终的应用程序运行界面如图4所示。

图4 应用程序与onlinebase数据库

连接后,运行的界面

(1)手动添加记录的实现

通过下列语句,可以在表results最后添加一条编辑框EdtRemark、EdtValue、EdtConditon中输入正确格式的记录。

Table1->Append();

Table1->FieldValues["id"] = nRecordID ;

Table1->FieldValues["remark"] = EdtRemark->Text ;

Table1->FieldValues["value"] = EdtValue->Text.ToInt() ;

Table1->FieldValues["conditon"] = EdtConditon->Text.ToInt() ;

添加记录后,刚增加的value字段内容也相应显示在Chart1上,具体实现语句如下:

double TempD = this->Chart1->Series[0]->XValues->Value[1] -

this->Chart1->Series[0]->XValues->Value[0] ;

this->Chart1->Series[0]->Delete(0) ;

Chart1->Series[0]->AddXY(this->Chart1->Series[0]->XValues->Last()+TempD,

this->Table1->FieldValues["value"],

this->Table1->FieldValues["id"],

clBlue ) ;

(2)动态绘制数据图表

为了模拟在线监测,实现了模拟动态监测的功能。首先从在组件模板的System标签页下拖动Timer1:TTimer组件到Form1上,在Object inspector中设置Timer1的Enabled属性为false,Interval属性为2000。

然后在Timer1中的OnTimer事件中先产生一个三角波,产生三角波的代码如下:

// 产生三角波波形

iCount = iCount % iPeriod ;

if( iCount

iValue = 10 * iCount ;

}else{

iValue = 10 * ( iPeriod - iCount ) ;

}

iCount = iCount + 1 ;

而后添加增加记录的代码,如下:

Table1->Append() ;

Table1->FieldValues["id"] = nRecordID ;

Table1->FieldValues[“remark”] = “正常” ;

Table1->FieldValues["value"] = iValue ;

Table1->FieldValues["conditon"] = 20 ;

最后添加实时显示的代码。这样只要在Auto按钮OnClick事件中使用一条 Timer1->Enabled = true; 语句就可以开始自动每隔2s增加一条记录,并实时显示value字段的值。图4 Chart1中显示的前两个三角形就是模拟在线监测显示的结果。

5.结论

本文在PC/104系统上的构建在线监测系统,软件平台采用Windows2000操作系统,在C++Build6.0环境下开发的应用软件借助MySQL数据库不仅可以在线显示监测数据和也可以从数据库中显示先关历史数据,软件界面友好,操作方便,运行稳定,性价比高。

参考文献

[1] Russell J.T Dyer.MYSQL 核心技术手册[M].李红军,李东梅.译.2 版.北京:机械工业出版社,2009:442-470.

[2]王军.Ian Gilfillan《MySQL4从入门到精通》[M].北京:电子工业出版社,2003.

[3]陆卫忠等.C++Builder 6程序设计教程(第二版)[M].科学出版社,2011.

作者简介:

毛成光(1990—),男,大学本科,现就读于温州医学院信息与工程学院生物医学工程专业。

通讯作者:

mysql数据库篇6

关键词:MySQL;存储管理;存储策略

中图分类号:TP316.81

1 研究背景

众所周知,MySQL并不是开源产品,但它在某些情况下可以免费使用。由于MySQL具备强大的功能,同时有灵活丰富的应用程序编程接口,兼备精致的系统结构,因此受到广大自由软件爱好者,甚至商业软件用户的青睐。MySQL有很好的综合性能,它与当今其他商业数据库系统相比的主要优势是三点:简单、高效、高稳定性。相比其他数据库,MySQL有几个显著的特点。MySQL跨平台性良好,比如微软的WINDOWS系列,以及RED HAT LINUX和UNIX,MySQL在LINUX环境支持多线程操作模式;同时MySQL支持多个数据库相互兼容(如Oracle,Informix,Sybase),还提供了支持ODBC模式;MySQL可以融合使用多种语言,比如JAVA、PERL、C、c++、PHP;另外MySQL提供了非常完善的权限机制。基于以上特点,MySQL应用日益广泛,对其存储管理策略进行研究很有必要。

2 MySQL程序管理

MySQL安装完成之后,可以在/usr/bin路径下找到MySQL程序管理单元。MySQLd_multi是管理多个MySQLd的服务进程,这些服务进程程序不同的unix socket或是监听于不同的端口。他可以启动、停止和监控当前的服务状态。程序在f(或是在--config-file自定义的配置文件)中搜索[MySQLd#]段,"#"可以是任意的正整数。这个正整数就是在下面提及的段序列,即GNR。段的序号做为MySQLd_multi的参数,来区别不同的段,这样你就可以控制特定MySQLd进程的启动、停止或得到他的报告信息。这些组里的参数就像启动一个MySQLd所需要的组的参数一样。但是,如果使用多服务,必须为每个服务指定一个unix socket或端口。

每一个GNR的值是组的序列号或是一个组的序列号范围。此项的值必须是组名字最后的数字,比如说如果组名为MySQLd17,那么此项的值则为17.如果指定一个范围,使用"-"(破折号)来连接二个数字。如GNR的值为10-13,则指组MySQLd10到组MySQLd13。多个组或是组范围可以在命令行中指定,使用","(逗号)隔开。不能有空白的字符(如空格或tab),在空白字符后面的参数将会被忽略。

3 MySQL数据维护管理

在MySQL数据库系统当中,通常使用两种方法来创建数据库,一种是在MySQL客户端程序环境下,使用创建数据库SQL语句。另一种是在LINUX SHELL环境管理工具中,使用MySQLadmin命令进行创建。

MySQL数据目录包含了所有的数据库,以及表管理的服务器,这些均被组织成一个树状结构,这种结构是LINUX文件系统下的层次结构,是一个简单的方法。针对MySQL数据库每个对应的数据库目录,子目录的数据库对象作为存储,主要在MySQL数据目录中,但是并不是代表数据库的名字必须是相同的。

数据库中的表对应于数据库目录的文件,在数据库目录中每个表都对应于三个文件:格式文件,数据文件,索引文件。每个文件与表具有相同的基本名称,分别扩展为指定文件类型,他们分别是格式文件、数据文件、索引文件。

4 MySQL日志信息管理

MySQL的日志信息管理地位很高,它提供了关于服务器运行的重要信息,因为数据库的管理和维护是非常重要的。

(1)传统日志与更新日志并存。传统的日志用于定期记录MySQL服务器运行信息,包括用户的连接、查询和其他事件。更新日志用于记录修改数据库查询的信息,常规日志和更新日志在默认情况下不启用。

(2)在服务器错误日志信息中,包含了写入标准错误输出设备的所有消息,也包含了MySQL服务启动和关闭事件信息。错误日志序列号,根据实用程序安全MySQLd进程,所以在通过调用安全MySQLd时启动MySQL服务,错误日志将会一直存在。默认情况下,错误日志并非储存在MySQL数据目录中,而是在配置文件/ etc /中,一般CNF为/ var / log / MySQLd日志。

5 MySQL内存信息管理

(1)多表连接操作。MySQL使用内存块用于连接操作,减少连接所涉及的表读取“驱动”数量,来提高连接操作速度,其中需要使用加入缓冲来帮助完成连接操作。当加入缓冲区太小时候,MySQL将缓冲到磁盘文件,但结果集须从joinbuffer加入操作,需要运行连接表,然后清空缓冲区加入,继续将其余的结果集写入缓冲区。所以加入缓冲尺寸,可以增加访问的IO速度。加入的缓存类型为全表扫描,索引扫描,以及有效的索引范围扫描,但是在其他情况下不使用缓存。

(2)线程堆栈信息管理。对于每个线程自己的符号信息,如基本信息的线程ID,线程运行ID等。对于每个线程堆栈,可以使用线程堆栈分配多少内存。

(3)确认使用内存。MySQL可以在内存对客户机的请求应答、排序,如果缓存大小不能满足实际需要,需要进行内存需求排序,MySQL会调用数据进程,写入磁盘文件完成排序,所以需要经常进行查询请求排序,其中sort_buffer_size参数设置对性能的影响是非常大的。

(4)读取数据缓冲区。内存的这一部分,主要针对用户内存读取数据操作,例如不能使用索引的全表扫描,类全扫描等。MySQL数据存储,需要根据数据读取相应的数据块,将临时数据块缓冲区进行读取。当缓冲区空间已满或所有的数据读取完毕,将缓冲区数据返回给调用者的顶部,这样可以提高效率。

6 MySQL用户和权限管理

MySQL提供了一个非常有用的访问控制系统,用于管理和控制用户使用的主机名、用户名和密码。它可以连接到指定的数据库服务器,可以打开数据库,可以进行及时读取、添加、修改和删除操作。MySQL权限系统的使用,确保所有用户可以严格按照预设分布,进行良好的对数据库的安全访问操作。

(1)请求与验证环节。这一环节中,系统将检查每个MySQL权限,根据用户给出的操作数据库请求,来确定该用户是否具有足够的权限,来执行安全操作。

(2)连接与验证环节。主要是确定用户的身份,根据这两个信息,判断从哪个主机连接和使用哪些MySQL注册用户。用户表在数据库MySQL连接时进行认证,用户需要使用系统主机、用户名和密码完成相关操作。

7 总结

本文立足于linux环境下MySQL数据存储管理策略,从相关背景出发,研究了MySQL下的各个板块的存储管理原理和技术,包括程序管理、数据维护管理、日志文件管理、用户和权限管理、内存管理等。本次研究在当今MySQL地位日益提升的背景下,显得尤为重要。

参考文献:

[1]罗凡,裴士辉,张雪松,等.MySQL中InnoDB 引擎的动态存储管理[J].东北师大学报(自然科学版),2006,38(1).

[2]顾治华,忽朝俭.MySQL存储引擎与数据库性能[J].计算机时代,2006,10:8-10.

[3]鲍文,李冠宇.本体存储管理技术研究综述[J].中国科技论文在线,2007.

[4]石夫乾,周林.一种基于 NAS 的网络存储管理软件的设计与应用[J].电脑知识与技术,2006,3.

mysql数据库篇7

本文介绍PHP的优点和特点,结合实例阐述了PHP访问MySQL数据库的方法。

关键词 PHP MySQL ODBC

1. 引言

在Internet应用中,将服务器端脚本技术和客户端脚本技术结合起来可以制作出丰富多彩的页面。CGI和ASP是比较流行的服务器端脚本技术。通常CGI在跨平台的开发中扮演着主要角色,可以使用VB、C或Perl等来实现,用它们写的CGI脚本是一个单独的程序,而不是嵌在HTML文档中再通过另一个程序解释替换的,所以它是一种“非嵌入式”的服务器端脚本。另外,每一次修改CGI程序都必须重新将其编译成执行文件,因此,这样的编写方式事实上是比较困难且没有效率。ASP则是嵌入式的服务器端脚本,每一次修改脚本并不需要重新编译成执行文件就可以直接执行,但ASP有一个致命的缺点:不具有跨平台开发能力。目前ASP只能在Windows环境下运行,而无法在Internet上的Unix平台下使用。在这种情况下PHP的问世,在Wel CGI的领域里掀起了一场革命。

2. PHP介绍

PHP (Personal Home Page)是一种跨平台的服务器端嵌入式脚本语言。它最初是Rasmus Lerdorf于1994年开发的。早期的版本,提供了访客留言本、访客计数器等简单功能。随后,在第二版中增加了对mSQL的支持。自此奠定了PHP在动态网页开发上的影响力,并迅速在Internet上流传开来。截止1999年,已有超过十五万个站点使用PHP。同时,PHP的源代码完全公开,在Open Source意识抬头的今天,它更是这方面的中流砥柱,随着新函数库的不断加入,使PHP无论在Unix或是Win32的平台上都可以有更多新的功能。如今,PHP已发展至4.0版。在语法方面,PHP混合了C、Java、Perl以及PHP以前版本的优点。它相当于Script与CGI的结合语言,但是其执行将效率却比CGI更好,程序编写也比HTML更便利且更富有弹性,程序的安全性及保密性也比Script好。在函数支持方面,PHP几乎覆盖了Web应用的各个方面,其中最有特色的是数据库函数,使用PHP完成一个含有数据库功能的网页非常简单,而PHP支持的数据库也非常丰富,目前包括:Oracle、Sybase、mSQL、MySQL、Informix等。

3. 访问MySQL数据库

MySQL是一个快速、健壮和易用,且支持多线程、多用户的SQL数据库服务器。虽然PHP通过ODBC支持几乎所有的数据库。但对于开发数据驱动的网站而言,选择MySQL应该说是最佳组合,这不仅因为MySQL是免费的,更在于它具有许多同大型数据库相媲美甚至超过它们的优良性能。PHP实现对MySQL数据库的访问有两种方法:

1)利用PHP的数据库函数连接

这里主要用到四个数据库函数:

mysql_connect ()建立与MySQL服务器的连接。

mysql_select_db ():选择MySQL服务器中的数据库供以后的数据查询操作query处理。 mysql_query ():送出query字符串以帮助MySQL做相关的处理或执行。

mysql_fetch_row ():用来将查询结果result单行移到数组变量中。数组的索引是数字

索引,第一个索引值是0。

2)通过ODBC连接

PHP通过ODBC连接MySQL数据库主要用到四个函数:

Odbc_connect ():用来同ODBC数据源建立连接。

Odbc_do ():用来在建立连接之后执行数据库查询。

Odbc_result():用于取得当前记录行中某个字段的值。

Odbc_fetch_row ():用来把查询结果保存到数组,每个数组元素对应一条记录。

上述两种方法在与数据库建立连接的语法上,并没有太大差别。不过在相比较之下,通过ODBC方式存取数据库比PHP直接存取MySQL耗时间,但通过ODBC接口存取数据库不必担心使用何种数据库,如Oracle,Informix,Sybase 等。它们都支持ODBC接口,这样可减少更换数据库时需要更改程序的问题。图1显了PHP连接数据库的两种方法。

PHP

MySQL

MySQL

图1 PHP连接数据库说明图

4. 一个应用实例

现在很多校园网站都提供成绩查询功能。PHP和MySQL数据库相结合使用可以方便的实现此功能。首先建立数据库Score 及数据表Score。建表SQL语句如下:

Creat table Score(

Stu_no varchar(10) not null,

name varchar(10) not null,

scorel tinyint(4),

score2 tinyint(4),

Primary Key(stu_no)

);

1) 通过PHP的数据库函数访问MySQL的代码如下:

〈?php

print(“〈html〉〈head〉\n”);

print(“〈title〉成绩查询〈/title〉〈/head〉\n”);

print(“〈body〉〈cennter〉”);

print(“〈font size=6 color=”ff0000〉您的成绩如下〈/font〉”);

$comm=mysql_connect(“localhost”,“root”,"");

mysql_select_db(“Score”,$comm);

$str=“Select *From Score Where stu_no=’$pstu_no'and name=’$pname'”;

$reault=mysql_query($str,$comm);

print(“〈table align=center〉”);

$sqlrow=mysql_fetch_row($result));

print(“学号:$sqlrow[0]”);

print(“姓名:$sqlrow[1]”);

print(“成绩1:$sqlrow[2]”);

print(“成绩2:$sqlrow[3]”);

print(“〈/table〉〈body.〈/html〉”);

?〉

2) 通过ODBC访问MySQL数据库的代码如下(省略的代码同上):

〈?php

…

$comm=odbc_connect(“Score”,"system","");

$str="Select*From Score Where name=’$pname’and stu_no=’$pstu_no’”;

$result=odbc_do($comm,$str);

…

while(odbc_fetch_row($result))

{

$pstu_no=odbc_result($result,"stu_no");

$pname=odbc_result($result,"name");

$score1=odbc_result($result,"score1");

$score2=odbc_result($result,"score2");

print(“学号:$pstu-no”);

print(“姓名:$pname”);

print(“成绩1:$score1”);

print(“成绩2:$score2”);

}

…?〉

5.结束语

对于Wed服务器端的开发,PHP是一种易开发、高效能的动态脚本编程语言。在未来的几年内,PHP必将成为主流的脚本语言,并被Wed研究和开发人员熟悉和掌握。

参考文献

[1]钟伟财 编著 精通PHP4.0与MySQL架构Wed数据库实务中国青年出版社

[2]蒋宇清 徐州师范大学计算机系 新一代嵌入式脚本语言PHP 计算机时代2000年

mysql数据库篇8

>> 基于PHP和MySQL的考试系统的研究 基于PHP和MySQL的同学录管理系统 基于PHP+MySQL的Web问卷调查系统 基于PHP的MYSQL数据库访问研究 基于PHP和MySQL的小型应用设计 基于PHP语言访问MySQL数据库的实现 基于PHP—MYSQL技术的图书信息管理系统设计 基于PHP语言+MYSQL数据库的教务管理系统分析 基于PHP和MySQL的《纳税实务》实践性教学系统构建研究 基于PHP+MYSQL技术的实验排课系统研究 基于PHP+MySQL的高校E―Learning系统的设计与实现 基于PHP和MySQL的考试系统的分析与应用 基于Linux平台Apache\PHP\MySQL数据库的WEB商务系统设计 基于PHP,MYSQL的网上书店系统设计与开发 基于PHP+Apache+MySQL 的评教系统设计与实现 基于PHP+Mysql的图书馆公告系统前台开发 基于PHP+MYSQL教务排课系统的设计与实现 基于PHP+MySQL的网络互动社区平台的设计与研究 基于PHP语言的MySQL数据库的多种输出方案 基于PHP+MySql的校园兼职信息平台的开发浅谈 常见问题解答 当前所在位置:l';"; }

以下附简单的登陆页面的html内容

用户名

密码

var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-22575914-1']);_gaq.push(['_setDomainName', '']);_gaq.push(['_trackPageview']);(function () {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ga.src = ('https:' == document.location.protocol ? 'ssl' : 'www') + '/ga.js';var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);})();var _userid = '';var _siteid =75;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =422; UrchinTrack();

显示成绩代码如下:

$result=mysql_query("select * from sreport where sno1='$sno1'");

$rows=mysql_num_rows($result); for($i = 0; $i

5.2 设计系统后台

管理员查询成绩、删除成绩代码:

include('conn1.php'); $sno1=$_GET['id']; $sql="delete from student where sno1='$sno1'"; mysql_query($sql); $sql="delete from sreport where sno1='$sno1'"; mysql_query($sql); echo "alert('成功删除!')";

显示、删除所有学生信息部分关键代码:

$result=mysql_query($sql); $row=mysql_fetch_row($result); while($row){ echo "$row[1]$row[2]

$row[3]

$row[4]

delete

";

echo "

if($page==1) echo $page; if($page>1){ $prev=$page-1;

echo "上一页";

echo "|"; echo "$page"; } if($page

学生成绩录入部分代码:

专业:

$zy_sql="select distinct XY from XZY";

$zy_result=mysql_query($XY_sql);

while($zy_row=mysql_fetch_array($XY_result)) { echo "”.$XY_row['XY'].""; } ?>

?>

6 总结

采用php技术和mysql数据库开发的学生成绩管理系统,充分考虑了当前学校对于学生成绩管理的的现状和需求,简化了客户端的操作要求,基本实现了系统设计要求,在信息化的今天,基于b/s模式的信息管理系统将会更加流行。

参考文献:

[1] 王啸骏.基于PHP+MySQL学生成绩管理系统[D].南京:南京晓庄学院,2008.

上一篇:数据库软件范文 下一篇:面板数据范文