|
MySQL有一套先进的但非标准的安全/授权系统,掌握其授权机制是开始操作MySQL数据库必须要走的第一步,对于一个熟悉SQL基本操作的人来说,也是MySQL所有的知识中比较难以理解的一个部分。本文通过揭开其授权系统的运作机制,希望大家能够可以更好地操作和使用这个优秀的数据库系统。
本文主要参考了MySQL安装所附的使用手册第六章中的部分内容。如果有任何疑问,请和我联系(lidong@wh.027.net)
1、授权机制的主要作用是什么?
授权机制的基本作用是给某个主机上的用户对某个数据库以select,insert,update和detete的权限。而其额外的功能还包括是否允许匿名使用数据库,使用MysQL的一些特定函数,如:LOAD
DATA INFILE之类。在这里请注意,MySQL中的用户名和Unix系统中的用户名并没有什么关系。虽然许多客户端程序允许你可以用当前的用户名进行登录,但是最标准的做法还是通过--user的选项。
2、授权机制是如何进行运作的?
在MySQL中主机和用户的联合视为唯一标志。比如说,在主机1和主机2上的用户lee实际上是不同的,他们对MySQL的使用权限也可以是有差别的。而整个授权机制的核心问题就是要解决授予从某个主机上登录的某个用户对某个数据库的使用权限。你可以通过脚本mysqlaccess测试一个主机上用户的对数据库操作的权限。而所有的授权信息都被存储在数据库mysql的user、host和db表中。我们可以通过mysql
mysql的指令连接到这个数据库中,并且通过select * from user(或者db,host)显示每个数据表中的内容。user表中所授予的权限是整个授权机制的基本授权,也就是说,user中的定义对于任何一个用户+主机来说都是适用的,除非在db表中另外有所定义,因此,对于用户来说最好是就某个数据库为基础进行授权。而host表的主要目的是维护一个“安全”服务器的列表。而在具体考虑某个用户/主机对某个数据库的权限的的时候,我们还需要研究一下授权机制的的匹配搜索机制:
其次,在授权机制中可以对一个用户的口令进行加密,而且是必须加密,加密的方法是password('口令'),如果直接填写口令的话,会导致数据库无法访问。user表中所授予的权限是整个授权机制的基本授权,也就是说,user中的定义对于任何一个用户+主机来说都是适用的,除非在db表中另外有所定义,因此,对于用户来说最好是就某个数据库为基础进行授权。而host表的主要目的是维护一个“安全”服务器的列表。而在具体考虑某个用户/主机对某个数据库的权限的的时候,我们还需要研究一下授权机制的的匹配搜索机制:
首先,我们需要介绍一下统配符的概念,统配符包括“%”,其意思为任意(的主机、用户或者数据库),而如果一条记录为空的话,也表示任意的意思。其次,在授权机制中可以对一个用户的口令进行加密,而且是必须加密,加密的方法是password('口令'),如果直接填写口令的话,会导致数据库无法访问。
从我们对这三个表的显示我们可以看到,这三个表中的每一条记录包含了对于某个用户的授权情况的描述,MySQL数据库中几个相关的授权机制的数据表被搜索的顺序为:user,db,host。也就是说,我们将首先首先检索user数据表,找到第一个匹配的记录,我们把在user数据表中首先匹配的记录称之为Priv;然后搜索db表,获得相应的授权。如果在db数据表相应记录中host字段的为空,并且Priv记录中主机也被包含在host表的host字段之中,这样的话,对于某个user来说,则可以在user表中加入在host表中的一些为“Y”的权限设定。如果在db表中的host字段不为空的话,那么也就不会对该用户/主机的授权产生什么影响了。
了解了这一点之后,我们需要讨论在各个数据表中的记录的搜索的优先权的问题,也就是说,怎样确定第一匹配的记录,这并不是按照数据表中的记录的自然先后顺序来确定的。在各个数据表内的各条记录的优先权排列如下:
(1)user表:根据先host后user的顺序确定。搜索规则如下:不包含统配符的记录,包含统配符的记录,空记录。而在同样一个host里面,继续按照user来排列,规则和上述的一样。
(2)db表:检索的顺序根据host字段确定:不包含统配符的记录,包含统配符的记录,空记录。
(3)host表:检索的顺序根据host字段确定:不包含统配符的记录,包含统配符的记录,空记录。我们用下面的例子来说明进行匹配搜索的规则:请记住如果你更改了这些数据表,你必须使用mysqladmin
reload使其生效。
下面是演示系统是如何进行搜索的:
+-----------+---------+-
| Host | User | ...
+-----------+---------+-
| % | root | ...
| % | jeffrey | ...
| localhost | root | ...
| localhost | | ...
+-----------+---------+-
搜索的顺序应当是:
localhost/root
localhost/any
any/jeffrey
any/root
这样,如果在localhost的用户jeffrey要连接数据库的话,那么其授权应当根据localhost/“任意” 行所规定的权限而非“任意”/jeffrey行所规定的权限,请大家注意这一点,因为如果不合适的配置完全可能会使得你无法正常地使用这个数据库系统。
我们现在来看一个添加一个用户的例子:需要添加一名叫做“custom”用户,他分别从主机'localhost', 'server.domain' 和
'whitehouse.gov'连接到数据库中,他的口令为“stupid”,对于数据库'bankaccount'他只想从“localhost”进行访问,而“customer”数据库则应当被上述3个主机所访问。我们通过以下的sql语句来完成其操作。
shell> mysql mysql.
mysql> insert into user (host,user,password)
values('localhost','custom',password('stupid'));
mysql> insert into user (host,user,password)
values('server.domain','custom',password('stupid'));
mysql> insert into user (host,user,password)
values('whitehouse.gov','custom',password('stupid'));
mysql> insert into db
(host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
values
('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> insert into db
(host,db,user,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
values
('%','customers','custom','Y','Y','Y','Y','Y','Y');
3、授权数据表
授权数据表对表的行操作包括select,insert,update和delete,对表和数据库的操作包括create和drop。其它的授权还包括如LOAD
DATA INFILE和SELECT INTO OUTFILE和管理命令:shutdown, reload, refresh 和process.三个授权数据表的结构如下所示:
user表
字段 类型 健 默认值
Host char(60) PRI ""
User char(16) PRI ""
Password char(16) - ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
Reload_priv enum('N','Y') - N
Shutdown_priv enum('N','Y') - N
Process_priv enum('N','Y') - N
File_priv enum('N','Y') - N
db表
字段 类型 健 默认值
Host char(60) PRI ""
Db char(64) PRI ""
User char(16) PRI ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
host 表只有在db的数据项中出现host为空的情况下使用。
字段 类型 健 默认值
Host char(60) PRI ""
Db char(64) PRI ""
Select_priv enum('N','Y') - N
Insert_priv enum('N','Y') - N
Update_priv enum('N','Y') - N
Delete_priv enum('N','Y') - N
Create_priv enum('N','Y') - N
Drop_priv enum('N','Y') - N
在数据表中可以使用统配符号。
4、最常见的Access denied出现错误的原因
(1)你是否通过mysql_install_db脚本建立mySQL的授权表,你可以通过mysql -u root进行测试,正确的情况下应该不会发生错误。或者,你是否有一个文件为:user.ISD,通常其位置在install_dir/var/mysql/user.ISD。
(2)最初使用的时候你应该使用mysql -u root mysql以存取数据库,或者以root身份进行操作。
(3)更改了授权之后是否使用了mysqladmin reload进行了更新?
(4)在以测试为目的的时候,你应当选用--without-grant-tables选项启动mysqld服务,你可以在这时更改授权表的相关内容,也可以用mysqlaccess检查你的授权是否到位。
(5)没有使用password("口令")设定了口令,结果也会出现错误,在使用-p的选项的时候,注意-ppassword之间没有空格。
5、如何使得MySQL更加安全?
(1)为每个MySQL用户使用口令。记住,如果你不加设口令的话,其他人可以通过mysql --user other_user database的方式访问你的数据库,在使用MySQL进行检测的时候系统也会给你相应的警告信息。
(2)不要用root方式启动MySQL服务。MySQL可以以任何用户启动。你可以通过添加一个新用户的方式来启动数据库服务。这也不会对系统造成任何影响,因为MySQL的用户和Unix的用户根本来说就使不同的。
(3)不要把'Process_priv','File_priv'等权限授予任何人。
(4)如果你不信任你的DNS,你应当使用IP来取代主机名。在任何情况下都要小心带匹佩符的主机名。以下的一些选项可以影响到你的系统的安全:
--secure
顾名思义,可以使系统根加安全,因为它可以检查IP地址的一致性。(实际连接IP地址和通过解析的IP地址),不过这使得mySQL在防火墙工作的时候很难被防火墙外的人所访问。
--skip-grant-tables
一般情况下不要使用这个选项,这可以试的任何人不受限制地访问你的系统。
--skip-name-resolve
不进行主机名的解析。在授权数据表中的所有主机名必须为ip地址或者'localhost'.
--skip-networking
不允许通过网络进行连接。所有的连接必须通过Unix Socket。
|
|
<?
/*
* Utility routines for MySQL.
*/
class MySQL_class {
var $db, $id, $result, $rows, $data, $a_rows;
var $user, $pass, $host;
/* Make sure you change the USERNAME and PASSWORD to your name and
* password for the DB
*/
function Setup ($user, $pass) {
$this->user = $user;
$this->pass = $pass;
}
function Create ($db) {
if (!$this->user) {
$this->user = "USERNAME"; /* 在这里作修改 */
}
if (!$this->pass) {
$this->pass = "PASSWORD"; /* 在这里作修改 */
}
$this->db = $db;
$this->id = @mysql_pconnect($this->host, $this->user,
$this->pass) or
MySQL_ErrorMsg("Unable to connect to MySQL server: $this->host :
'$SERVER_NAME'");
$this->selectdb($db);
}
function SelectDB ($db) {
@mysql_select_db($db, $this->id) or
MySQL_ErrorMsg ("Unable to select database: $db");
}
# Use this function is the query will return multiple rows. Use the Fetch
# routine to loop through those rows.
function Query ($query) {
$this->result = @mysql_query($query, $this->id) or
MySQL_ErrorMsg ("Unable to perform query: $query");
$this->rows = @mysql_num_rows($this->result);
$this->a_rows = @mysql_affected_rows($this->result);
}
# Use this function if the query will only return a
# single data element.
function QueryItem ($query) {
$this->result = @mysql_query($query, $this->id) or
MySQL_ErrorMsg ("Unable to perform query: $query");
$this->rows = @mysql_num_rows($this->result);
$this->a_rows = @mysql_affected_rows($this->result);
$this->data = @mysql_fetch_array($this->result) or
MySQL_ErrorMsg ("Unable to fetch data from query: $query");
return($this->data[0]);
}
# This function is useful if the query will only return a
# single row.
function QueryRow ($query) {
$this->result = @mysql_query($query, $this->id) or
MySQL_ErrorMsg ("Unable to perform query: $query");
$this->rows = @mysql_num_rows($this->result);
$this->a_rows = @mysql_affected_rows($this->result);
$this->data = @mysql_fetch_array($this->result) or
MySQL_ErrorMsg ("Unable to fetch data from query: $query");
return($this->data);
}
function Fetch ($row) {
@mysql_data_seek($this->result, $row) or
MySQL_ErrorMsg ("Unable to seek data row: $row");
$this->data = @mysql_fetch_array($this->result) or
MySQL_ErrorMsg ("Unable to fetch row: $row");
}
function Insert ($query) {
$this->result = @mysql_query($query, $this->id) or
MySQL_ErrorMsg ("Unable to perform insert: $query");
$this->a_rows = @mysql_affected_rows($this->result);
}
function Update ($query) {
$this->result = @mysql_query($query, $this->id) or
MySQL_ErrorMsg ("Unable to perform update: $query");
$this->a_rows = @mysql_affected_rows($this->result);
}
function Delete ($query) {
$this->result = @mysql_query($query, $this->id) or
MySQL_ErrorMsg ("Unable to perform Delete: $query");
$this->a_rows = @mysql_affected_rows($this->result);
}
}
/* ********************************************************************
* MySQL_ErrorMsg
*
* Print out an MySQL error message
*
*/
function MySQL_ErrorMsg ($msg) {
# Close out a bunch of HTML constructs which might prevent
# the HTML page from displaying the error text.
echo("</ul></dl></ol>n");
echo("</table></script>n");
# Display the error message
$text = "<font color="#ff0000" size=+2><p>Error:
$msg :";
$text .= mysql_error();
$text .= "</font>n";
die($text);
}
?>
|
|
SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。大家用的最多的可能是Microsoft的SQL
Server,其功之强大是有目共睹的,但是它的体积非常庞大,而且对硬件要求比较高。以SQL Server 7.0来说,微软的要求是DEC Alpha或兼容系统,Intel
Pentium 166MH或以上机型,建议使用 Pentium PRO或PENTIUM II芯片的计算机。如果安装的SQL Server 7.0企业版,那么至少要求64M的内存,如果是其他版本,则至少需要32M内存。
对某些想学习SQL的人来说,Microsoft SQL Server并不是最佳选择,我给大家介绍一个高效的SQL服务器-MySQL。
MySQL支持多种操作系统,如下所示:
有原生线程的AIX 4.x
包括 MIT-pthreads 包的BSDI 2.x
有原生线程的BSDI 3.0、3.1和4.x
有原生线程的DEC UNIX 4.x
包括MIT-pthreads包的FreeBSD 2.x
有原生程的FreeBSD 3.x
包括 MIT-pthreads 包的 HP-UX 10.20
有原生线程的 HP-UX 11.x 。
有 LinuxThreads 0.7.1 的 Linux 2.0 + 或glibc2.0.7
MacOS X 服务器
NetBSD 1.3/1.4 Intel 和 NetBSD 1.3 Alpha ( 需要 GNU make)
包括 MIT-pthreads 包的 OpenBSD 2.x
OS/2 Wrap 3、FixPack 29和OS/2 Wrap 4、FixPack 4
有原生线程的SGI Irix 6.x
SPARC和x86上有原生线程的Solaris 2.5、2.6和2.7
包括 MIT-pthreads 包的SunOS 4.x
有最新FSU Pthreads移植包的SCO OpenServer
SCO UnixWare 7.0.1
Tru64 Unix
MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL是由一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。
SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能SQL语言为一个网站检索产品信息及存储顾客信息。同时MySQL足够快速和灵活以便允许你存储记录文件和图像。
MySQL 主要目标是快速、健壮和易用。最早是因为我们需要这样一个SQL服务器,它能处理任何能提供不昂贵硬件平台上的数据库厂家的一个数量级上的大数据库,但速度更快,MySQL被开发出来。自从
1996 年以来,我们一直都在使用MySQL,其环境是有超过 40 个数据库,包含 10,000个表,其中超过500个表超过7 百万行,这大约有100 个吉字节的关键应用数据。
大家可以从MySQL主页http://www.mysql.com得到最新的Windows版本,目前最新的版本是Mysql-3.23.36-win,ODBC驱动程序的最新版本是myodbc-2.50.36-win95.国内有一个镜像站点 http://www.freecode.com.cn/mirror/mysql/。国内的许多站点也可以下载,比如教育网内的许多大学都有起最新的版本提供下载,如ftp://166.111.136.3
, ftp://ftp.cdit.edu.cn , ftp://ftp.dlut.edu.cn ,ftp://ftp.pku.edu.cn等等。
我选择基于win32的版本介绍怎么使用MySQL.
所先你要到以上介绍的站点下载一个比较新的版本,下载回来一般是压缩包,解压到某一目录下并运行setup.exe. 缺省地,MySQL-Win32被配置安装在"C:\mysql"。如果你想要在其它地方安装MySQL,选择你想安装的目录,安装完成即可。安装完成之后安装目录一般包含以下字目录:bench,bin,data,Docs,examples,include,lib,scripts,share.bench下存放配置文件,bin下存放客户程序和mysql服务器,data下存放你所创建的数据库和系统数据库以及记录文件,lib是库文件,Docs下是一些介绍mysql的文档include下的文件是mysql的接口头文件。
MySQL使用 TCP/IP 把一个客户连接到一个服务器。(这将允许在你的网络上任何机器连接你的MySQL服务器)。因此,你必须在启动MySQL前在你的机器上安装TCP/IP,你可以在你的Windows
CDROM上找到TCP/IP 。如果你正在使用一个旧的Win95版本(例如OSR2),很有可能你有一个老的Winsock包!MySQL需要Winsock
2!你可从微软得到最新的Winsock。Win98有新的Winsock 2库作为缺省,这样上述不适用于Win98。
你可以用三种不同方式启动你的MySQL服务器:
Mysqld ,用完整调试和自动存储器分配检查编译;
Mysql-opt, 对Pentium 处理器优化 ,
Mysqlc,具有命令历史功能(可以用上下箭头翻阅历史记录,免得每次使用都要重新输入命令).
为了启动mysqld服务器,你应该启动一个MSDOS窗口并键入:
X:\mysql\bin\mysqld/mysql-opt/mysqlc(X为目标驱动器)
这将在一个没有窗口的背景启动mysqld。
你可以这样杀死MySQL服务器,执行:
C:\mysql\bin\mysqladmin -u root shutdown。
你还可以用一个第三方应用程序winmysqladmin来管理Mysql,这个软件也可以从许多站点得到。
如果你想从其他地方连接到本地数据库,你还需要安装ODBC驱动程序myodbc.
通过执行下列命令,你能测试MySQL是否正在工作:
C:\mysql\bin\mysqlshow
C:\mysql\bin\mysqlshow -u root mysql
C:\mysql\bin\mysqladmin version status proc
C:\mysql\bin\mysql test
用下面这个语句可以设置root口令:
C:\mysql\bin\mysqladmin reload
C:\mysql\bin\mysqladmin -u root password your_password
对共享版软件,可以这样设置root口令:
C:\mysql\bin\mysql mysql
mysql> UPDATE user SET password=PASSWORD('your password') WHERE
user='root';
mysql> QUIT
C:\mysql\bin\mysqladmin reload
全部设置好以后,你就可以使用mysql了,运行:
x:\mysql\bin\mysql -h localhost -u root -p
然后根据提示输入你的root密码,出现提示符mysql>,现在你便可以输入命令进行操作了。如:
show databases; 显示现有数据库
use databasename;打开名为databasename的数据库
show tables;显示数据库下的表
create table tablename (column1,column2,…);创建名为tablename的表,包含括号中的几个字段
select,update,insert into ,delete create index,create view等命令操纵mysql进行查询。
你也可以从远端登录到本地数据库,只要将-h后的localhost改为服务器的ip地址即可,进入之后的操作是一样的。
|
|
(上篇)
有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。
一、连接MYSQL。
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)
二、修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345。
mysqladmin -uroot -pab12 password djg345
三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on *.* to test1@"%" Identified by
"abc";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by
"abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by
"";
(下篇)
在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。
一、操作技巧
1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。
二、显示命令
1、显示数据库列表。
show databases;
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
use mysql; //打开库,学过FOXBASE的一定不会陌生吧
show tables;
3、显示数据表的结构:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名;
create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中的记录:
select * from 表名;
三、一个建库和建表以及插入数据的实例
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表结束
//以下为插入字段
insert into teacher values('','glchengang','深圳一中','1976-10-10');
insert into teacher values('','jack','深圳一中','1975-12-23');
注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary
key(2)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。
(4)将YEAR设为日期字段。
如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\mysql\bin,然后键入以下命令:
mysql -uroot -p密码 < c:\school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
四、将文本数据转到数据库中
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.
例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令 load data local infile "文件名" into table 表名;
注意:你最好将文件复制到\mysql\bin目录下,并且要先用use命令打表所在的库 。
五、备份数据库:(命令在DOS的\mysql\bin目录下执行)
mysqldump --opt school>school.bbb
注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。
后记:其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的MYSQL教程还是“晏子“译的“MYSQL中文参考手册“不仅免费每个相关网站都有下载,而且它是最权威的。可惜不是象"PHP4中文手册"那样是chm的格式,在查找函数命令的时候不太方便。
|