《网络数据库MySQL服务的配置与应用.ppt》由会员分享,可在线阅读,更多相关《网络数据库MySQL服务的配置与应用.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1414章章 数据库服务器技术数据库服务器技术Linux网络技术网络技术第第12章章 网络数据库网络数据库MySQL服务的配置与应用服务的配置与应用本章导读l MySQL的概述l MySQL的安装l MySQL服务的配置和使用l MySQL的图形化配置l 安装phpMyAdminl 启动和停止MySQL服务MySQL的概述的概述MySQL是一个高性能、多线程、多用户、建立在客户/服务器结构上的关系型数据库管理系统(RDBMS)。它始于1979年,最初是Michael Widenius为瑞典的TcX公司创建的名为UNIREG的数据库系统,但当时的UNIREG没有SQL接口。1996年5月,W
2、idenius开发出了今天众所周知的MySQL最初版本,随后就开始在互联网上公开发行。当前的最新版本是MySQL 5.0。MySQL的概述的概述MySQL的主要特征如下。性能高效而稳定,MySQL几乎比当前可用的其他所有数据库的性能都不差,因此Yahoo、Google、Cisco、HP和NASA等都采用了它作为自己的数据库引擎。开放源代码,MySQL是自由的开放源代码产品,可以在GPL下畅通使用。多用户支持,MySQL可有效地满足501000个并发用户的访问,并且在超过600个用户的限度的情况下,MySQL的性能并没有明显的下降。多线程,MySQL使用核心线程的完全多线程,这意味着可以采用多C
3、PU体系结构。开放性,支持ANSI SQL-99标准,适用于多种操作系统(如Linux、Solaris、FreeBSD、OS/2、MacOS以及Windows95/98/Me/2000/XP和Windows NT等),可在多种体系结构(如Intel x86、Alpha、SPARC、PowerPC和IA64等)上运行。广泛的应用程序支持,有C、C+、Java、Perl、PHP和Python等多种客户工具和API的支持。支持事务处理、行锁定、子查询、外键和全文检索等功能。支持大数据库处理,可对某些包含50 000 000个记录的数据库使用MySQL。有灵活且安全的权限和口令系统,并且允许对其他主机
4、的认证,等等。MySQL的安装 几乎所有的Linux发行版本都内置了MySQL数据库,Red Hat Enterprise Linux 5也不例外,它内置了MySQL-5.0.22-2.1,只不过系统安装程序默认并不安装它。读者可使用下面的命令检查系统是否已经安装了MySQL或查看已经安装了何种版本。rpm q mysqlMySQL的安装如果系统还没有安装MySQL程序,要使用数据库服务,通常需要在Red Hat Enterprise Linux 5的安装光盘中找到并安装以下RPM包文件:perl-DBI-1.52-1.fc6.i386.rpm(位于Red Hat Enterprise Lin
5、ux 5的第2张安装光盘);perl-DBD-MySQL-3.0007-1.fc6.i386.rpm(位于Red Hat Enterprise Linux 5的第2张安装光盘);openssl-devel-0.9.8b-8.3.el5.i386.rpm(位于Red Hat Enterprise Linux 5的第2张安装光盘);e2fsprogs-devel-1.39-8.el5.i386.rpm(位于Red Hat Enterprise Linux 5的第2张安装光盘);krb5-devel-1.5-17.i386.rpm(位于Red Hat Enterprise Linux 5的第2张安装
6、光盘);zlib-devel-1.2.3-3.i386.rpm(位于Red Hat Enterprise Linux 5的第2张安装光盘)。MySQL是客户程序及共享库,其对应的PRM包文件为:mysql-5.0.22-2.1.i386.rpm(位于Red Hat Enterprise Linux 5的第2张安装光盘);mysql-server-5.0.22-2.1.i386.rpm(MySQL数据库服务,位于Red Hat Enterprise Linux 5的第2张安装光盘);mysql-bench-5.0.22-2.1.i386.rpm(MySQL数据库基准和性能测试工具,位于Red H
7、at Enterprise Linux 5的第3张安装光盘);mysql-devel-5.0.22-2.1.i386.rpm(开发MySQL程序时使用的库和头文件,位于Red Hat Enterprise Linux 5的第3张安装光盘)。要安装上述RPM包文件,可将Red Hat Enterprise Linux 5的安装盘放入光驱,加载光驱后在光盘的Server目录下找到相应的RPM安装包文件,然后使用rpm-ivh命令安装 12.3MySQL服务的配置和使用修改MySQL管理员的口令数据库的创建和删除表的创建、复制、删除和修改表中数据的插入、删除和修改索引的创建与删除用户的创建和删除用户
8、权限的设置修改MySQL管理员的口令 使用下面格式的mysqladmin命令创建MySQL管理员root的密码。mysqladmin-u root password 密码字符串要连接MySQL服务器,就必须用以下格式的mysql命令。mysql -h 主机名或IP地址-u 用户名-p 再想修改其密码,就必须使用以下格式的mysqladmin命令。mysqladmin-u root-p password 新密码字符串数据库的创建和删除 1创建数据库在MySQL中创建数据库的SQL语句格式为:CREATE DATABASE 数据库名称;2选择数据库要选择一个数据库,使它成为所有事务的当前数据库,可
9、使用以下格式的SQL语句。USE 数据库名称;3删除数据库要删除一个数据库及其所有表(包括表中的数据),可使用以下格式的SQL语句。DROP DATABASE数据库名称;表的创建、复制、删除和修改 1创建表在MySQL中创建表,可使用以下格式的SQL语句。CREATE TABLE 表名称(字段1,字段2,字段n,表级约束)TYPE=表类型;其中:(1)字段i(i=1,2,n)的格式为:字段名 字段类型 字段约束表的创建、复制、删除和修改部分常用的字段类型 类类型型描述描述INT允许值在0232-1(无符号)或-231231-1(有符号)之间的标准整数DOUBLE双精度浮点数CHAR最大长度不超
10、过255个字符的定长字符串VARCHAR最大长度不超过255个字符的变长字符串TEXT最大长度为65 535个字符的字符串BLOB可变数据的二进制类型DATEYYYYMMDD格式表示的日期值表的创建、复制、删除和修改约约束束描述描述NULL(或NOT NULL)指定允许(或不允许)某字段为空,默认为NULL(允许)DEFAULT为某字段指定一个默认值AUTO_INCREMENT自动为某个INT字段生成一个递增加1的整数常用的字段约束 表级约束 约约束束描述描述PRIMARY KEY为表指定主键FOREIGN KEYREFERENCES为表指定外键INDEX创建索引UNIQUE为某个字段建立索引
11、,该字段的值必须惟一FULLTEXT为某个字段建立全文索引表的创建、复制、删除和修改表类型 表表类类型型描述描述MYISAM具有很多优化和增强的特性,是MySQL默认的表类型ISAM类似MYISAM,但是功能较少HEAP保存在内存中,存取速度快,但存储量小,一旦失败就无法恢复BDB支持事务和页锁定INNODB支持事务、外键和行锁定,它是MySQL中最完善的表格式MERGE可把多个MyISAM表构建为一个虚拟表,使得对这些表的查询仿佛在一个表上进行,提高了查询速度和修复效率,并节省了磁盘空间表的创建、复制、删除和修改【例】要在学生选课数据库中创建一个名为student的表(存放学生的有关信息),
12、可输入下面的命令。mysqlcreate table student(-sno varchar(7)not null,-sname varchar(20)not null,-ssex char(1)default t,-sbirthday date,-sdepa char(20),-primary key(sno)-);表的创建、复制、删除和修改2复制表在MySQL 5中,可以使用下面的SQL语句来复制表结构。CREATE TABLE 新表名称 LIKE 源表名称;3删除表MySQL中删除一个或多个表的SQL语句格式为:DROP TBALE 表名称1,表名称2,;4修改表在创建表之后,如果修改
13、表结构,例如添加、删除或者修改表字段,创建或撤销索引,更改表的名称和类型等,则需要使用ALTER语句来进行。ALTER语句的基本格式为:ALTER TABLE 表名称 更改动作1,更改动作2,;表中数据的插入、删除和修改 1插入记录在MySQL中,可以使用下面基本格式的SQL语句在表中插入记录。INSERT INTO 表名称(字段名1,字段名2,)VALUES(字段1的值,字段2的值,);2删除记录在MySQL中,可使用下面基本格式的SQL语句从表中删除记录。DELETE FROM 表名称 WHERE 条件表达式;3修改记录除了数据的插入和删除,表中的数据也经常要进行更新。为此,MySQL提供
14、了用于修改记录中数据的SQL语句UPDATE,该语句的基本格式为:UPDATE 表名称 SET 字段名1=字段值1,字段名2=字段值2WHERE 条件表达式;索引的创建与删除索引的创建与删除1在创建表的同时创建索引使用PRIMARY KEY子句为该表指定了一个主键sno,MySQL就会自动为该表的sno字段创建索引。此外,在创建表时,还可以用INDEX子句或UNIQUE子句来创建索引。2向已存在的表添加索引使用CREATE INDEX语句可向已存在的表添加索引,该语句的基本格式如下:CREATE UNIQUEINDEX 索引名 ON 表名称(字段名1(长度),);3删除索引当不再需要索引时,可
15、使用DROP INDEX语句删除它,该语句的格式为:DROP INDEX 索引名 ON 表名称;用户的创建和删除用户的创建和删除原来当首次安装MySQL时,MySQL安装程序在数据库mysql中设置5个MySQL授权表(如表12-5所示),由这5个授权表共同决定哪个用户可以连接服务器、从哪里连接以及连接后可以执行哪些操作。初始化时,表host、tables_priv和columnts_priv是空的,表user和db就决定了MySQL默认的访问规则。下面以MySQL管理员的身份查看一下表user和db的内容。授授权权表表描述描述user定义哪些用户从哪些主机可以连接到数据库服务器,这些用户的密
16、码以及它们对系统中所有数据库的访问权限(全局权限)db定义连接到数据库服务器的那些用户可以使用哪些数据库,在这些数据库中可执行哪些操作(数据库级权限),db通常与host配合使用host当表db中的Host字段值为空时,由表host定义用户可以从哪些主机连接到数据库服务器,且不同的主机对指定的数据库可有不同的权限tables_priv定义连接到数据库服务器的那些用户可以访问哪些表,以及在这些表中可以执行哪些操作(表级权限)columnts_priv定义连接到数据库服务器的那些用户可以访问哪些字段,以及在这些字段中可以执行哪些操作(字段级权限)授权表 用户的创建和删除用户的创建和删除查看数据库m
17、ysql中表user前4个字段的内容,可使用下面的命令。mysqlselect host,user,password,select_priv from mysql.user;要查看数据库mysql中表db的前4个字段内容,可使用下面的命令。mysqlselect host,db,user,select_priv from mysql.db;用户的创建和删除用户的创建和删除1创建新用户要创建一个新用户guest,并为他设置密码,同时允许它从任何主机连接到数据库服务器,可按以下步骤进行设置。以MySQL管理员身份从本地连接到数据库服务器,可使用下面的命令实现。mysql-u root-p 创建新用
18、户guest,并为他设置密码,同时允许它从任何主机连接到数据库服务器,可使用下面的命令实现。mysqlinsert into mysql.user(host,user,password)-values(%,guest,password(guest);此处必须使用password()函数,该函数会为密码加密,这样在表user的字段password中保存的就是经过加密的密码。重载MySQL授权表,可使用下面的命令实现。mysqlflush privileges;用户的创建和删除用户的创建和删除2删除用户删除用户应使用delete语句。【例】要删除用户guest,可使用下面的命令。mysql del
19、ete from mysql.user where user=guest;3更改用户密码由于MySQL授权表实际上与MySQL常规表没有什么本质区别,因此也可以用UPDATE语句来修改其内容,包括修改用户密码。用户权限的设置用户权限的设置实际上,MySQL授权表中权限字段有以下两种形式。(1)在表user、db和host中,所有权限字段都被声明为ENUM(N,Y),即每一个权限字段值都可以被设置为N或Y,并且缺省值为N,表12-6列出了表user、db和host中可设置权限的字段。(2)在表tables_priv和columns_priv中,权限字段被声明为SET类型,即可以从所定义的权限集合
20、中选择任意个权限,表12-7列出了表tables_priv和columns_priv中权限字段及可设置的权限。用户权限的设置用户权限的设置授权表user、db和host中可设置的权限字段字段权权限名限名拥拥有有该权该权限的用限的用户户可可执执行的操作行的操作select_priv*SELECT数据查询insert_priv*INSERT数据插入update_priv*UPDATE数据修改delete_priv*DELETE数据删除create_priv*CREATE创建数据库和表drop_priv*DROP删除数据库和表reload_privRELOAD重载/刷新MySQL服务器shutdow
21、n_privSHUTDOWN关闭正在运行的MySQL服务器process_privPROCESS在MySQL服务器上跟踪一项活动file_privFILE在服务器上读写文件grant_priv*GRANT授予其他用户拥有该用户拥有的权限references_priv*REFERENCES创建、编辑和删除外键引用index_priv*INDEX创建、编辑和删除表索引alter_priv*ALTER修改表show_db_privSHOW DATABASES显示可使用的数据库super_privSUPER执行管理命令create_tmp_table_priv*CREATE TEMPORARY TAB
22、LES创建临时表lock_tables_priv*LOCK TABLES创建和删除表锁定execute_privEXECUTE执行被保存的程序repl_slave_privREPLICATION SLAVE在复制内容中读主二进制日志repl_client_privREPLICATION CLIENT在复制内容中申请主、副信息用户权限的设置用户权限的设置授权表tables_priv和columns_priv中权限字段和可设置的权限 表名表名字段名字段名权权限集合中的成限集合中的成员员tables_privtable_privSelect、Insert、Update、Delete、Create、D
23、rop、Grant、References、Index、Altercolumn_privSelect、Insert、Update、Referencescolumns_privcolumn_privSelect、Insert、Update、References用户权限的设置用户权限的设置1使用GRANT语句授权GRANT语句的基本格式如下:GRANT 权限列表(字段列表)ON 数据库名称.表名称 TO 用户名域名或IP地址 IDENTIFIED BY 密码值WITH GRANT OPTION;设置“域名或IP地址”的几种常见情况域名或域名或IP地址地址描述描述(空白)从任何主机连接数据库服务器,等
24、价于%从任何主机连接数据库服务器%从域中的任何主机连接数据库服务器192.168.16.%从子网192.168.16.0中的任何主机连接数据库服务器localhost从本地主机连接数据库服务器192.168.16.17从IP地址为192.168.16.17的主机连接数据库服务器192.168.16.0/20从子网192.168.16/20中的任何主机连接数据库服务器从域名为的主机连接数据库服务器用户权限的设置用户权限的设置(2)授予用户不同级别的访问权限例如,要新建一个用户tom,让他能从子网192.168.16.0中任何主机连接到数据库服务器,可以读取数据库xsxk的内容,并且能修改表cou
25、rse中字段techer的值,可使用下面的命令。mysqlgrant select on xsxk.*to tom192.168.16.%identified by 123456;mysqlgrant update(teacher)on xsxk.course to tom192.168.16.%;使用GRANT语句设置权限运用级别的示例数据数据库库名称名称.表名表名称称描述描述权权限限运运用用级别级别决定决定权权限限运运用用级级别别的的授授权权表表*.*适用于所有数据库和所有表全局级userxsxk.*(或xsxk)适用于指定数据库xsxk中的所有表数据库级dbxsxk.student适用于
26、数据库xsxk中的指定表student表级tables_priv(3)授予用户管理权限的权利例如,MySQL管理员要授予用户admin可以从本地连接到数据库服务器,对学生选课数据库xsxk具有完全访问权限,并可将其所拥有的权限授予其他用户,可使用下面的命令。mysqlgrant all on xsxk.*to adminlocalhost identified by sW56$Azx-with grant option;2使用REVOKE语句撤权REVOKE语句的基本格式如下:REVOKE 权限列表(字段列表)ON 数据库名称.表名称 FROM 用户名域名或IP地址 12.4MySQL的图形化
27、配置目前,架设动态Web站点比较流行的是采用Linux上的Apache+MySQL+PHP(简称LAMP)组合方案,即用Apach作Web服务器,MySQL充当后台管理数据库,用PHP开发Web程序。采用这种组合方案来开发和架设Web站点,具有免版权费、系统效率高、灵活、可扩展、稳定和高度安全等优点,只是在站点的架设、升级与维护上有一定的难度。MySQL标准发行版本没有提供图形界面管理工具,因此使用起来有些困难。为了解决这个问题,Tobias Ratschiller开发了一套用于管理MySQL数据库的开放源代码的工具phpMyAdmin(如图12-48所示为phpMyAdmin的官方网站)。在
28、经过众多爱好者的共同修改与再开发后,目前使用phpMyAdmin已经可以很方便地完成大部分MySQL数据库管理员需要完成的工作。12.5安装phpMyAdmin配置phpMyAdmin配置phpMyAdmin虚拟目录使用phpMyAdmin12.5安装phpMyAdminphpMyAdmin是用PHP编制的一种B/S(浏览器/服务器)结构的“软件”,与其说是软件,还不如说是一些放在服务器端的通过浏览器界面管理的页面程序文件,因此安装phpMyAdmin实际上就是将它解压到一个允许执行PHP的目录下。安装的具体步骤如下。从http:/ xvzf phpMyAdmin-2.10.3-all-lan
29、guages.tar.gz该命令执行后,将在/root目录下生成一个子目录phpMyAdmin-2.10.3-all-languages。为了便于测试,将子目录phpMyAdmin-2.10.3-all-languages移动到默认Apache Web站点的主目录/var/www/html下,并改名为phpMyAdmin,可使用下面的命令。mv phpMyAdmin-2.10.3-all-languages/var/www/html/phpMyAdmin配置配置phpMyAdmin将phpMyAdmin安装到系统中后,还需要进行一定的配置才能正常使用。配置phpMyAdmin,实际上是通过修改
30、配置文件config.inc.php实现的,该文件位于刚建立的目录/var/www/html/phpMyAdmin中。配置配置phpMyAdmin$cfgPmaAbsoluteUri=;$i=0;$i+;$cfgServers$ihost =localhost;$cfgServers$iport =;$cfgServers$isocket =;$cfgServers$iconnect_type =tcp;$cfgServers$iextension =mysql;$cfgServers$icompress =FALSE;$cfgServers$icontroluser =;$cfgServer
31、s$icontrolpass =;$cfgServers$iauth_type =config;$cfgServers$iuser =root;$cfgServers$ipassword =ilGHW56p;$cfgServers$ionly_db =;配置配置phpMyAdmin完成了上述设置后,要测试phpMyAdmin能否正常工作,可在本地浏览器的地址栏中输入“http:/localhost/phpMyAdmin”。如果配置无误的话,则能看到phpMyAdmin管理界面。配置配置phpMyAdmin虚拟目录虚拟目录 配置DNS。假设在DNS服务器上已经创建了一个名为“”的主区域,那么可在
32、该区域的配置文件中加入下面的一条CNAME(别名)记录。mysql IN CNAME .安装phpMyAdmin。由于前面已经配置了phpMyAdmin,因此此时只需要使用下面的命令将/var/www/html/phpMyAdmin目录移动到/var目录中。mv /var/www/html/phpMyAdmin /var配置配置phpMyAdmin虚拟目录虚拟目录 配置phpMyAdmin虚拟目录。这是通过修改Apache服务的配置文件/etc/httpd/conf/httpd.conf来实现的。在该配置文件中可加入以下内容。Alias/pma /var/phpMyAdmin#为/var/ph
33、pMyAdmin创建虚拟目录pma#以下内容为虚拟目录设置权限Options FollowSymLinks#允许服务器在该目录中使用符号链接AllowOverride None#禁止使用.htaccess文件 AuthType Basic#设置认证类型为基本认证AuthName Please Login#将在提示对话框中显示“Please Login”AuthUserFile/etc/apachepasswd/userpwd#指定用来存放用户密码的文件require user root#设置能访问该虚拟目录的用户为rootrequire user mysql 建立密码文件并为用户设置密码。使用
34、下面的命令可创建一个新的记录用户名和用户密码的密码文件。mkdir/etc/apachepasswd cd/etc/apachepasswd htpasswd-c userpwd root配置配置phpMyAdmin虚拟目录虚拟目录 设置允许Apache守护进程httpd访问phpMyAdmin虚拟目录。在Red Hat Enterprise Linux 5中,由于SELinux被默认安装并被开启使用,在默认的SELinux安全配置中,httpd被目标策略所控制,因此为了让用户能够通过网络访问phpMyAdmin虚拟目录,就必须设置允许Apache守护进程httpd访问phpMyAdmin虚拟
35、目录。具体设置方法是,使用下面的命令让httpd可以读取在虚拟目录phpMyAdmin中被标记为httpd_sys_content_t的所有文件。chcon-R-h-t httpd_sys_content_t /var/phpMyAdmin配置配置phpMyAdmin虚拟目录虚拟目录 在MySQL中创建用户。为了确保MySQL数据库的安全,应为MySQL管理员(root用户)设置密码,该密码可以与刚才创建的用于访问phpMyAdmin虚拟目录的root用户密码相同。这样,在phpMyAdmin的配置文件config.inc.php中,就可以使用config验证方式,并将输入root用户名及其密
36、码,即在config.inc.php文件中可进行下面的设置。$cfgServers$iauth_type=config;$cfgServers$iuser=root;$cfgServers$ipassword=ilGHW56p;此外,为了使刚才创建的用于访问phpMyAdmin虚拟目录的用户mysql也能使用phpMyAdmin访问MySQL数据库,可使用下面的命令在MySQL中创建该用户,并使他仅具有浏览所有数据库的权限。mysqlgrant select on*.*to mysqllocalhost identified by 123456;这样,如果希望在平时使用用户账户mysql通过p
37、hpMyAdmin来浏览MySQL数据库,可在config.ini.php中进行下面的修改。$cfgServers$iauth_type=config;$cfgServers$iuser=mysql;$cfgServers$ipassword=123456;使用phpMyAdmin 1访问phpMyAdmin虚拟目录在浏览器的地址栏中输入“http:/ start 2停止MySQL服务/etc/init.d/mysqld stop3重新启动MySQL服务/etc/init.d/mysqld restart12.6启动和停止MySQL服务 4自动启动MySQL服务 如果需要让MySQL服务随系统启动而自动加载,可以执行“ntsysv”命令启动服务配置程序,找到“mysqld”服务,在其前面加上星号(*),然后选择“确定”即可。12.7 练习题【练习1】架设一台MySQL数据库服务器,并按照下面的要求进行操作。(1)建立一个数据库,在该数据库中建立一个至少包含5个字段的数据表,并为数据表添加至少10条记录。(2)试完成对数据库、表及记录的各项编辑工作。(3)为数据库创建各类用户,并为他们设置适当的访问权限。【练习2】配置phpMyAdmin虚拟目录,试使用phpMyAdmin来完成数据库的各项管理工作。
限制150内