网络数据库指南(转)

由 linuxiae 在 06-17-2003 10:39 发表:

网络数据库指南(转)

译者:黑仔强 ([email protected])

安装MySQL

好,我们可以开始正式的安装了。假设你把所有必须的源码或者包都放在了/tmp下。如果你下载的是RPM包的话,那比较简单;如果你下载的是二进制包(你没有rpm程序或者你想自定义的话),那么会稍微麻烦一点。

RPM包安装

你必须成为root用户才能使用rpm安装程序,以下是安装过程:

$ cd /tmp

$ su

rpm -Uvh MySQL*(安装和MySQL相关的所有包)

这将安装你下载的所有3个MySQL包。如果你的系统是RedHat Linux的话,建议使用RPM安装方式,因为所有的工作都由rpm程序帮你搞好了。

源码安装

相对于用RPM安装来讲,用二进制源码安装是稍微麻烦了点。但是我们可以在安装脚本中可以自定义安装的相关参数,而不用象rpm方式只能安装默认的来安装。

安装二进制源代码

如果你下载的是二进制源代码,它的名字类似于: mysql-3.22.21-pc-linux-gnu-i686.tar.gz。你必须成为root用户,然后解压到 /usr/local目录,操作步骤如下:

$ cd /usr/local

$ su

tar -zxvf /tmp/mysql-3.22.21-pc-linux-gnu-i686.tar.gz

在所有文件解压完后,一个名字叫mysql-3.22.21-pc-linux-gnu-i686的目录将被创建出来。我们为这个目录做个符号链接,并给它一个更友好的名字mysql (免得叫mysql-3.22.21-pc-linux-gnu-i686这么长):

ln -s mysql-3.22.21-pc-linux-gnu-i686 mysql

如果以后有新版本的MySQL的话,你可以仅仅将源码解压到新的路径,然后只需要做个符号链接就可以了。这样非常方便,数据也更加安全。

建立一个MySQL 用户

好,现在我们将建立一个能运行MySQL守护程序的用户帐号,并且所有MySQL文件都归此帐户拥有。使用 Linuxconf或者useradd命令去添加一个叫 mysql 的帐号,在添加之前,确保没有人注册了这个帐户,还要暂时禁止login功能(不过一般都是在没有其他人登陆的情况下调试机器,因此这个步骤可免)

为MySQL做准备

首先让我们将MySQL目录和文件的拥有权改成 mysql 用户和root组:

cd /usr/local

chown -R mysql:root mysql-3.22.21-pc-linux-gnu-i686 mysql

然后运行一个小脚本程序,以建立初始化的MySQL数据库。请以一个mysql 用户的身份完成这个任务,这也是我们能够直接使用这个帐户的唯一机会。

su mysql

$ cd mysql

$ scripts/mysql_install_db

$ exit

如果没有任何出错信息显示的话,那就可以了。

自动运行MySQL

在MySQL二进制包里面,有一个叫myslq.server的启动脚本程序。把它复制到/etc/rc.d/init.d目录里面:

cd /etc/rc.d/init.d

cp /usr/local/mysql/support-files/mysql.server mysql

接着把它的属性改为“x”(executable,可执行)

chmod +x mysql

最后,运行chkconfig把MySQL添加到你系统的启动服务组里面去。

/sbin/chkconfig --del mysql

/sbin/chkconfig --add mysql

测试MySQL

MySQL里面有一个简单的数据库例子test ,而且它的内部数据库一直保持对权限和帐户的监视,因而先运行mysql看看是否可以工作。

首先启动MySQL:

/etc/rc.d/init.d/mysql start

如果一切正常,你将看到以下的信息出现:

Starting mysqld daemon with databases from /var/lib/mysql

如果你安装的是RPM包,那么程序大都安装在/usr/local/mysql/bin。在此目录下运行客户端程序:

mysql

然后你可以看到屏幕显示出以下信息:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2 to server version: 3.22.21

Type 'help' for help.

mysql>

接着,用show databases命令可以将安装的数据库列出来:

mysql> show databases;

你就可以看到:

+----------+

| Database |

+----------+

| mysql |

| test |

+----------+

2 rows in set (0.00 sec)

如果一切正常的话,那说明MySQL可以完全工作了!恭喜你!如果要退出程序,输入:exit

mysql> exit;

Bye

更改管理员密码

在一切正常后,要做的第一件事情是更改管理员的密码。你可以运行mysqladmin (请注意,此命令不一定在你的path中,所以最好是转到此命令的目录中直接执行):

mysqladmin -u root password newpassword

此命令把root用户的口令变成newpassword。当然你可以把口令换成其它,因为这个很容易破解。

安装 Apache

现在该安装Apache了。假设你下载的源文件在/tmp目录,确保你是以root帐号登陆,以下是安装步骤:

$ tar -zvxf apache_1.3.6.tar.gz

$ cd apache_1.3.6

$ ./configure --sysconfdir=/etc/httpd \

--datadir=/home/httpd \

--logfiledir=/var/log/httpd \

--enable-module=most \

--enable-shared=max \

--disable-rule=WANTHSREGEX

这告诉Apache把配置文件保存在/etc/httpd目录。其他文件(例如HTML手册文档,CGI-BIN目录)都保存在 /home/httpd目录下。这也告诉Apache我们将使用最常用的模块,并把这些模块作为DSO模块编译,DSO 就是Dynamic Shared Object的缩写。通过DSO支持的模式编译Apache,你能够随时从Apache里面增加和移除模块,而不需要重新编译它,这可是非常方便的。如果你对此有兴趣的话,你可以仔细参阅Apache DSO 文档(在 http://www.apache.org/docs/dso.html 你可以找到)。接着就是运行make进行编译:

$ make

这将耗费一段时间,一般现在使用的机器(大都是PII 级别)都可以在很短时间内完成编译。完成后,你必须把身份更改成root,以获得权限把编译后的文件复制到最终的目录下:

$ su

make install

一切正常的话,你可以看到一连串的信息出现,告诉你Apache是如何被安装的。如果你使用RedHat Linux 的话,从/usr/local/apache/bin/apachectl 到 /etc/rc.d/init.d/httpd 建立一个符号连接:

ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

然后在此文件总添加以下几行(大概在文件顶部,约第二行的地方):

chkconfig: 2345 10 90

description: Activates/Deactivates Apache Web Server

最后,运行chkconfig把Apache添加到系统的启动服务组里面:

/sbin/chkconfig --del httpd

/sbin/chkconfig --add httpd

配置Apache

从Apache 1.3.4开始,3个配置文件:srm.conf, httpd.conf,access.conf的指令都已经集中在httpd.conf一个文件中。因此用文本编辑器打开httpd.conf并且更改以下指令为:

Port 80

DirectoryIndex index.html index.shtml index.cgi index.phtml index.php3

AddType application/x-httpd-php3 .php3 .phtml

AddType application/x-httpd-php3-source .phps

搜索整个文件,更改其他那些你认为需要更改的指令。详细的指令介绍,请访问Apache官方站点并查阅相关文档。

测试 Apache

如果你的系统是RedHat Linux ,请运行:

/etc/rc.d/init.d/httpd start

否则可以运行:

/usr/local/bin/apachectl start

如果顺利,那么可以从其他机器上的浏览器上连接到你的机器并将看到Apache的欢迎页面。并检查以下进程是否运行着:

ps ax | grep httpd

运行该命令后可以看到

14362 ? S 0:00 /usr/local/apache/bin/httpd

14364 ? S 0:00 /usr/local/apache/bin/httpd

14365 ? S 0:00 /usr/local/apache/bin/httpd

14366 ? S 0:00 /usr/local/apache/bin/httpd

14367 ? S 0:00 /usr/local/apache/bin/httpd

14368 ? S 0:00 /usr/local/apache/bin/httpd

好,我们现在先关闭Apache,然后安装PHP如果你使用的是RedHat Linux,那么:

/etc/rc.d/init.d/httpd stop

否则请运行:

/usr/local/bin/apachectl stop

安装PHP

待Apache安装和调试完成后,现在把精力集中到PHP上。假设你下载的源文件在/tmp目录下,好,现在可以开始了。(不过暂时还不需要用root帐户):

$ cd /tmp

$ tar -zxvf php-3.0.7.tar.gz

$ cd php-3.0.7

$ ./configure --with-apxs=/usr/local/apache/bin/apxs \

--with-config-file-path=/etc/httpd \

--with-mysql \

--with-gd \

--with-zlib \

--with-system-regex

这个配置将把PHP编译成Apache的DSO模块。配置文件将保存在/etc/httpd (和Apache 配置文件一起)。如果你按照本指南的做的话, 一切应该很顺利。

如果你把apxs安装到了其他路径中,请更改--with-apxs=/usr/local/apache/bin/apxs 以指向apxs 脚本程序所在的路径。如果你是使用RPM包安装Apache的话,apxs应该在 /usr/sbin/apxs 。

如果你以二进制包安装MySQL的话,你应该把 --with-mysql 改成--with-mysql=/usr/local/mysql

如果你没有GD库,那么请取消--with-gd这一行。

运行完配置脚本后,你可以用make编译PHP:

$ make

如果没有任何错误发生的话,你就必须更换成root用户以安装PHP:

$ su

make install

那好了,PHP已经魔术般地被安装进了Apache。等Apache重新启动后就可以生效。

配置PHP

把PHP配置文件复制到/etc/httpd目录中:

cp php3.ini-dist /etc/httpd/php3.ini

此默认配置文件已经可以很好地工作,不过我喜欢看到详细的调试信息,因此把error_reporting指令的默认值从7改到15:

error_reporting = 15

然后你可以通过以下任一个方式重新启动Apache:

/etc/rc.d/init.d/httpd start

/usr/local/apache/bin/apachectl start

如果没有出错信息出现的话,那意味着PHP生效了。让我们用一个最简单的包含PHP程序的页面测试一下以确认PHP确实可以工作

测试PHP

新建一个叫test.php3的文件,内容如下:

1<html>
2<head>
3<title>My First PHP Page</title>
4</head>
5<body bgcolor="#ffffff">
6<? echo "Hello World"; ?>
7</body>
8</html>

保存这个页面,并放置在Apache的htdocs或者/home/httpd/html目录下(如果你用RPM包安装的话)然后从你的浏览器中浏览它,例如:

lynx http://localhost/test.php3

你将看到一个显示“Hello World”的页面。这说明一切正常!好,接着我们介绍一个简单的Web数据库例子。

Web数据库实例(第一部分)

下一节我们开始学习一步步创建基于Web的数据库。首先,我们先建立数据库,并装入一些数据。完成这步后,我们就新建一些PHP 脚本,和数据库通信并看看全过程。

创建数据库

确认运行着MySQL服务器进程。如果没有的话,请手动启动它:

/etc/rc.d/init.d/mysql start

现在我们以MySQL客户程序的管理员身份启动它,这次我们将看到需要输入密码的提示:

mysql -u root -p

Enter password: newpassword

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 13 to server version: 3.22.21

Type 'help' for help.

mysql>

新建数据库

用命令:create database example 新建一个叫example的数据库。当使用MySQL客户程序的时候,请记住 在每个命令结束时加上;(分号)

mysql> create database example;

Query OK, 1 row affected (0.03 sec)

mysql> use example;

Database changed

新建一个表

在名字叫example的数据库中建立一个叫mytable的表:

mysql> CREATE TABLE mytable (

-> name CHAR(30),

-> phone CHAR(10)

-> );

Query OK, 0 rows affected (0.00 sec)

小技巧:很多Linux系统都使用bash的Shell,它可以显示你使用过的命令的历史,只需要用上下键即可,这样你可以节省很多时间去输入复杂的命令。

添加数据

现在我们向数据库输入些数据。例如向表中插入一些条目,以下是操作步骤:

mysql> INSERT INTO mytable VALUES ("Homer Simpson", "555-1234");

Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO mytable VALUES ("Bart Simpson", "555-4321")

Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO mytable VALUES ("Lisa Simpson", "555-3214");

Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO mytable VALUES ("Marge Simpson", "555-2314");

Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO mytable VALUES ("Maggie Simpson", "555-3142");

Query OK, 1 row affected (0.00 sec)

确认通过SELECT指令可以看到所有信息:

mysql> SELECT * FROM mytable;

+----------------+----------+

| name | phone |

+----------------+----------+

| Homer Simpson | 555-1234 |

| Bart Simpson | 555-4321 |

| Lisa Simpson | 555-3214 |

| Marge Simpson | 555-2314 |

| Maggie Simpson | 555-3142 |

+----------------+----------+

5 rows in set (0.00 sec)

新建数据库用户

我们已经建立了一个数据库并且输入了一些数据。现在必须新建一个用户帐号以便可以访问数据库,并且用GRANT命令赋予此用户特权:

mysql> GRANT usage

-> ON example.*

-> TO webuser@localhost;

Query OK, 0 rows affected (0.15 sec)

此后就创建了一个新用户叫:webuser,这个用户只能从localhost连接到数据库并可以连接到example 数据库。下一步,我们必须指定webuser这个用户可以执行哪些操作:

mysql> GRANT select, insert, delete

-> ON example.*

-> TO webuser@localhost;

Query OK, 0 rows affected (0.00 sec)

此操作使webuser能够在每一个example数据库中的表执行SELECT,INSERT和DELETE等查询操作。现在我们结束操作并退出MySQL客户程序:

mysql> exit

Bye

Web数据库实例(第二部分)

创建完数据库后,我们可以使用PHP程序取出example数据库内部的数据并以HTML格式输出。

新建PHP脚本

为了使工作简单化,我们仅仅编写2个脚本。其中一个将所有的数据库条目都以列表的形式显示出来;另外一个则允许我们增加新的内容。

index.php3

在你的Web目录(通常是Apache的htdocs 或者html目录)下新建一个叫example的目录:

cd /home/httpd/htdocs

mkdir example

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus