LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 675|回复: 1

网络数据库指南(转)

[复制链接]
发表于 2003-6-17 10:39:30 | 显示全部楼层 |阅读模式
译者:黑仔强 (openlinux@yeah.net)

安装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的文件,内容如下:

<html>
<head>
<title>My First PHP Page</title>
</head>
<body bgcolor=#ffffff>
<? echo "Hello World"; ?>
</body>
</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

接着,在此目录下用任意的文本编辑器编写一个叫index.php3的PHP3脚本,其内容至少是:

<html>
<head><title>Web Database Sample Index</title>
</head>
<body bgcolor=#ffffff>
<h1>Data from mytable</h1>

<?
mysql_connect("localhost", "webuser", "");
$query = "SELECT name, phone FROM mytable";
$result = mysql_db_query("example", $query);

if ($result) {
  echo "Found these entries in the database:<ul>";
  while ($r = mysql_fetch_array($result)) {
     $name = $r["name"];
     $phone = $r["phone"];
     echo "<li>$name, $phone";
     }
     echo "</ul>";
} else {
     echo "No data.";
}
mysql_free_result($result);
?>

<p><a href="add.php3">Add new entry</a>
</body>
</html>

 

add.php3

然后在同样目录下新编辑一个叫add.php3的脚本。此脚本完成两样事情:一:它会显示信息,提示用户向数据库添加数据;二:它会将输入的信息添加到数据库。

<html>
<head><title>Web Database Sample Inserting</title>
</head>

<body bgcolor=#ffffff>

<?
mysql_connect("localhost", "webuser", "");

if (isset($name) && isset($phone)) {
   $query = "INSERT INTO mytable VALUES ('$name', '$phone')";
   $result = mysql_db_query("example", $query);

if ($result) {
      echo "<p>$name was added to the database</p>";
   }
}
?>

<h1>Add an entry</h1>
<form>
Name: <input type=text name='name'><br>
Phone: <input type=text name='phone'><br>
<input type=submit>
</form>

<p><a href="index.php3">Back to index</a>
</body>
</html>

编写完简单又高效的脚本后,现在该测试它了。
Web数据库实例(第三部分)
所有工作都可以告一段落了。让我们看看它是否可以正常工作。保证所有人对此文件有读的权限(用以下命令实现:chmod ugo+r)否则,你会看到从Apache返回的“访问拒绝”的错误信息。现在打开浏览器并访问刚才所编写的PHP脚本,假设你用lynx浏览器,则:

$ lynx http://localhost/example

如果正常,这应该出现一个将你早先添加进数据库中所有的条目都罗列出来的页面。例如:

Found these entries in the database:
* Homer Simpson, 555-1234
* Bart Simpson, 555-4321
* Lisa Simpson, 555-3214
* Marge Simpson, 555-2314
* Maggie Simpson, 555-3142

Add new entry

如果选择“增加新的条目”超级链接的话,你就可以进入一个让你添加数据的页面。

Name: ____________________

Phone: ____________________

Submit

Back to index

输入一些东西然后按下“提交”按钮。这将输入了信息的表单提交回PHP脚本。这时候在名字和电话两个区域都有了值,而这些值将被添加入数据库。 如果操作成功的话,你将会看到添加成功之类的信息。选择“返回index”这个链接,回到第一个脚本,看看你刚才输入的数据确实是添加进了数据库。如果一切正常,那么:恭喜你!!你已经通过本指南建立了你第一个Web数据库应用程序了。是不是很容易呢?

结尾

在这里,我们来个总结。你现在已经对建立Web数据库所需要的相关知识有了一个很初步的了解。我们只是触及了一些表面的东西。至于深入的学习和使用,你应该到Apache,PHP和MySQL的主页上查看详细的文档。如果你特别对MySQL文档有兴趣的话,你可以找到并了解到使用它的局限性和兼容性。虽然它是个很不错的产品,并且性能好而且确实容易用,但是它有它的局限性。例如:在我写本文的时候,它还不支持嵌套选择。

在互连网上,你还可以找到很多相关的指南。一些比较好的地方是:

Developer's Shed (http://www.devshed.com)

PHP Homepage (http://www.php.net)

到现在为止,你应该明白以上讲述的相关软件是如何协同工作的了。至于其他你所喜欢的工具和软件,其实其根本的概念大体上都是很相似的。我希望你觉得本文档有用处吧。
 楼主| 发表于 2003-6-17 10:41:57 | 显示全部楼层
架了几天的站,总是问题重重而不知如何解决,现搜集了一些相关资料与大家共享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表