网站主页   操作系统    网络工程    服务器    网页制作    数据库    程序开发    网络安全    办公软件   
  栏目导航
讲座日期: 本周六下午1点30分 抢座
讲座地点: 北大青鸟马甸校区
主讲老师: 王老师 金牌讲师
讲座主题: 网络安全
讲座内容: 检测、防御、黑客信息,如何过滤不安全的网站,如何防御黑客的进攻。
订座电话: 010-82011432/33
  您当前位置:主页 > 网络学院 > 数据库 > MYSQL >

MySQL数据库技术(33)




 
    现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值。客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译。这十分不方便,特别是想使程序用于其他人时。在运行时指定连接参数的一个通用的方法是使用命令行选项。MySQL 分发包中的程序接受两种形式的连接参数,如表6 - 1所示。

    与标准的MySQL 客户机程序一致,客户机程序将接受同样的格式。这很容易,那是因为客户机库包括了实现选项分析的函数。
    除此之外,客户机程序具有从选项文件中抽取信息的能力。这允许将连接参数放在-/. m y. c n f(也就是主目录中的. m y.cnf 文件)中,以便不用在命令行中指定它们。客户机库使检查MySQL 选项文件和从它们中抽取任何相关的值变得非常容易。只在程序中增加几行代码,就可以使选项文件识别它,并且通过编写自己的代码而不必重新改造这个框架来进行操作。附录E “MySQL 程序参考”中说明了选项文件的语法。
    6.5.1 访问选项文件内容
    使用load_default() 函数为连接参数值读取选项文件, load_default() 寻找选项文件、分析任何感兴趣的可选组的内容,以及重新编写程序的参数向量( a rgv[] 数组),以便把来自于那些组的信息以命令行选项的形式放置在argv[] 的开头。这就是说,在命令行指定出现的选项。因此,当分析命令选项时,就得到了作为常规选项分析循环部分的连接参数。选项加到argv[] 的开头而不是加到末尾,所以,如果连接参数真的在命令行指定,它们要比load_defaults() 增加的任何选项晚一些出现(因而忽略)。面的小程序show _ argv 显示了如何使用load _ defaults ( ),并举例说明了对参数向量如何做出这样的修改:

    该处理选项文件的代码包括:
    ■ groups[] 是一个字符串数组,表示所感兴趣的选项文件组。对于客户机程序,始终至少指定“client” ([client] 组)。数组的最后一个元素必须是NULL。
    ■ my_init() 是load_defaults() 所需的执行一些设置操作的初始化例程。
    ■ load_defaults() 有四个参数:选项文件的前缀(这里应该始终是“ m y”),列出感兴趣的可选组的数组、程序参数的数目和向量的地址。不传数目和向量的值,而是传地址,因为load_defaults() 需要改变它们的值。特别注意的是,虽然a rgv 是一个指针,但还是要传& argv ,它是指针的地址。
    show _ argv打印参数两次,第一次是在命令行指定它们的时候,第二次是在load _ defaults( )修改它们的时候。为了查看load_defaults() 的运行效果,应确信在主目录中有一个具有[client] 组指定设置的. my.cnf 文件。假设. my.cnf 文件如下:

    有可能会从不在命令行或~ /.my.cnf 文件中的s h o w _ a rgv 所产生的输出结果中看到一些选项。如果是这样,它们或许是在系统范围的选项文件中指定的。在主目录中读取. m y.cnf 之前,load_defaults() 实际上是在MySQL 数据目录中寻找/ e t c / m y.cnf 和m y.cnf 文件(在Windows中, load_defaults() 在Windows 系统目录中寻找文件C : my. c n f、C : \ m y s q l \ d a t a \ m y.cnf 和m y.ini )。

    


Copyright © 2002-2015 版权所有
学校地址:北京市海淀区西三旗建材城中路29号北大青鸟
招生热线:010-82011433/32 京公网安备110102004704  京ICP备05043413号 京公网安备110102004704