RHEL5.x Linux 下的 mySQL

   我使用的是 RHEL5.1 版本,是 Redhat 企业版目前较高的版本(更高的我见过5.3)。RHEL5.x 以上版本,红帽子加强了版权控制,主要体现在软件包的GUI管理器不再随便使用,而是必须在红帽子注册后,才能使用这项功能。没有了软件包的GUI管理器,给软件管理造成了很大的不便,要么注册,要么就是手工管理 rpm 软件包。而手工管理 rpm 软件包可不是随便谁都可以管好的,就是熟练的系统管理员,也很发怵的。关于这个,本人有篇文章,利用本地光盘发行包来作为软件包管理的来源,较好地解决了问题:《RHEL5.0 的软件包管理》http://blog.why100000.com/?p=481。

    RHEL5.1 和红帽子的其他发行版类似,mySQL 安装后不是类似于 Windows 下的文件整体组织形式,而是被拆分得“四分五裂”,分散的分布于 Linux 的各个文件夹下,可能是向 Linux 的文件管理标准看齐吧。其文件分布如下:

    /usr/bin    mysql客户端程序和脚本
    /usr/sbin   mysqld服务器
    /var/lib/mysql   mysql日志文件,数据库
    /usr/share/doc/packages   mysql文档
    /usr/include/mysql  mysql包含(头)文件
    /usr/lib/mysql      mysql库
    /usr/share/mysql    mysql错误消息和字符集文件
    /usr/share/sql-bench   mysql基准程序

    //PhpMyAdmin 的安装和配置:

    首先注意:PhpMyAdmin2.x 系列版本针对的是小于PHP 5.2 以下版本,PhpMyAdmin3.x 系列版本针对的是大于等于 PHP 5.2 以上版本。

    1,PhpMyAdmin 在 mySQL 的 root 用户为空口令时,可以直接运行。但 root 用户必须被设置密码!
    修改 root 用户口令为“mypassword”:
    mysqladmin -u root password mypassword
    然后必须配置 PhpMyAdmin 的配置文件:
    拷贝 config.inc.sample.php 为 config.inc.php ,修改帐户、密码、服务器地址等一些必要的配置。

    2,提示“配置文件现在需要绝密的短语密码(blowfish_secret)”的处理:
    “blowfish_secret”用一个任意字符串作为cookie的加密字符串,如果没有加密钥匙,系统会显示”配置文件现在需要绝密的短语密码(blowfish_secret) ” ,配置如下:
    打开配置文件 config.inc.php,修改配置项:

    $cfg['Servers'][$i]['auth_type'] = 'cookie';  //默认既如此
    $cfg['blowfish_secret'] = 'mysecret';(其中的"mysecret"自定义)

    修改以后,就可以输入用户和密码登录了。

    3,提示“无法载入 mcrypt 扩展,<br />请检查 PHP 配置”的处理
    运行 php -m 命令(还可以用 phpinfo()函数来看),发现确实没有安装这个模块,安装 PHP 的 mcrypt.so 扩展模块即可。
    注意,在 RHEL5.x 下,PHP(版本5.1.6)配置扩展的方法,与 Windows 下去掉 php.ini 文件中“extension=xxxx.dll”的注释不同。
    注意 /etc/php.ini 中的 extension_dir = "/usr/lib/php/modules",表明所有扩展模块是放置于这里的。再注意“Dynamic Extensions”部分的以下一段话:
    ;;;;
    ; Note: packaged extension modules are now loaded via the .ini files
    ; found in the directory /etc/php.d; these are loaded by default.
    ;;;;
    表明在 RHEL5 下管理扩展与 Windows 下很不同,要打开某个扩展,需要在 /etc/php.d 下建立一个 ini 文件。例如,在支持 mySQL 数据库时,会有个 mysql.ini 文件,内容如下:
    ;Enable mysql extension module
    extension=mysql.so

    所以,要支持 mcrypt 扩展,需要在 /usr/lib/php/modules 下有 mcrypt.so 文件,同时在 /etc/php.d 下有 mysql.ini 文件,内容为:
    ;Enable mcrypt extension module
    extension=mcrypt.so

    但是:RHEL5 的安装光盘里并没有这个文件!意味着,即使我们已经绕过注册能够自行管理软件包,也是不能直接安装 mcrypt 支持的!--Linux 就是这么糟糕!(此时我想大吼一声“开源万岁!狗屁不通!”)这个文件需要到网上去找(我又想大吼一声“网络万岁!”)。在网上找到 php-mcrypt-5.1.6-1.el5.i386.rpm 文件(来源我不清楚,应当是 Redhat 吧,而且需要对应 RHEL5 版本),运行一下包查看命令:
    [root@localhost ~]# rpm -qpl php-mcrypt-5.1.6-1.el5.i386.rpm
    warning: php-mcrypt-5.1.6-1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6f7eee0f
    /etc/php.d/mcrypt.ini
    /usr/lib/php/modules/mcrypt.so
    可以看到,安装后模块文件所处位置,对应的目录和我上边的分析一直。于是运行:
    rpm -ivh php-mcrypt-5.1.6-1.el5.i386.rpm
    啊哈~~~出错了!错误提示:
    libmcrypt.so.4 is needed by php-mcrypt-5.1.6-1.el5.i386
    看来 php-mcrypt-5.1.6-1.el5.i386.rpm 包是依赖 libmcrypt 包的。
    继续上网去搜,下载到 libmcrypt-2.5.7-2.fc3.i386.rpm 软件包,看一下里面包的是什么馅儿:
    [root@localhost ~]# rpm -qpl libmcrypt-2.5.7-2.fc3.i386.rpm
    warning: libmcrypt-2.5.7-2.fc3.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6
    /usr/lib/libmcrypt.so.4
    /usr/lib/libmcrypt.so.4.4.7
    /usr/share/aclocal/libmcrypt.m4
    /usr/share/doc/libmcrypt-2.5.7
    /usr/share/doc/libmcrypt-2.5.7/AUTHORS
    /usr/share/doc/libmcrypt-2.5.7/COPYING.LIB
    /usr/share/doc/libmcrypt-2.5.7/ChangeLog
    /usr/share/doc/libmcrypt-2.5.7/KNOWN-BUGS
    /usr/share/doc/libmcrypt-2.5.7/NEWS
    /usr/share/doc/libmcrypt-2.5.7/README
    /usr/share/doc/libmcrypt-2.5.7/THANKS
    /usr/share/doc/libmcrypt-2.5.7/TODO
    /usr/share/man/man3/mcrypt.3.gz

    OK,libmcrypt.so.4 就在其中。“…fc3…”表明这个包就是 Redhat 出产的,可能会继续支持 RHEL5(向这类基础性的库,厂家一般会重复使用,经验啊!)。安装试一下:
    [root@localhost ~]# rpm -ivh libmcrypt-2.5.7-2.fc3.i386.rpm
    warning: libmcrypt-2.5.7-2.fc3.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6
    Preparing...                ########################################### [100%]
       1:libmcrypt              ########################################### [100%]
    成功。再安装 mcrypt 包:
    [root@localhost ~]# rpm -ivh php-mcrypt-5.1.6-1.el5.i386.rpm
    warning: php-mcrypt-5.1.6-1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6f7eee0f
    Preparing...                ########################################### [100%]
       1:php-mcrypt             ########################################### [100%]
    也成功了。重新启动 apache 服务:
    [root@localhost ~]# httpd -k restart

    再打开 PhpMyAdmin 地址,好了。
    手工安装了以上的软件包以后,在软件包管理器里也可以看到它们,说明手工安装和图形界面的包管理,其实质是一样的。

    就为了不出现“无法载入 mcrypt 扩展……”这条提示,在 Linux 下我们做了多少事情!而 Windows 下则相对容易多了,复制 libmcrypt.dll 到 dlls 目录和 system32 目录下,再在 php.ini 中去掉注释,重新启动 Web 服务即可。Windows 下容易是主要原因是不用去网上找那些东西,可见 PHP 对 Windows 的支持要完善得多。或者说,Linux 对 PHP 的支持要打些折扣,不知道是不是商业上的考虑?

    附:
    1,WINDOWS操作系统下Mysql 5.1的文件分布:
    bin   客户端程序和mysqld服务器
    data   日志文件,数据库
    Docs   文档
    examples   示例程序和脚本
    include   包含(头)文件
    lib   库
    scripts   实用工具脚本
    share   错误消息文件

    2,Unix系统下文件分布:
    bin   客户端程序和mysqld服务器
    data   日志文件,数据库
    docs   文档,ChangeLog
    include   包含(头)文件
    lib   库
    scripts   mysql_install_db
    share/mysql   错误消息文件
    sql-bench   基准程序

    3,在 Linux 下,采用源码包(需要配置并编译源码)或二进制包安装mySQL后,一般情况下,可以将文件安装到/usr/local,即在下面的子目录中:
    /usr/local/bin             客户端程序和脚本
    /usr/local/include/mysql   包含(头)文件
    /usr/local/info            Info格式的文档
    /usr/local/lib/mysql       库
    /usr/local/libexec         mysqld服务器
    /usr/local/share/mysql     错误消息文件
    /usr/local/sql-bench       基准程序和crash-me测试
    /usr/local/var             数据库和日志文件

你可能感兴趣的:(RHEL5.x Linux 下的 mySQL)