第6章通过PHP访问MySQL数据库42-1第6章通过PHP访问MySQL数据库网页设计与编程第6章通过PHP访问MySQL数据库42-2第6章通过PHP访问MySQL数据库登录到MySQL服务器MySQL的存取权限系统常用MySQL数据库管理操作PHP中的MySQL操作数据库程序应用举例注意:使用本章的联机演示前,需要使用d:\xampp\mysql\bin\mysqladmin-urootpasswordsesame给MySQL的root用户设置口令第6章通过PHP访问MySQL数据库42-3本章教学目标进一步介绍MySQL的一些基本操作及与之相关的概念将介绍通过PHP来访问MySQL的方法了解两种客户端程序访问MySQL的异同要求掌握掌握在PHP中对MySQL进行操作,包括在PHP中数据库的连接、数据的检索、创建数据库、删除数据库、向数据库中插入数据等第6章通过PHP访问MySQL数据库42-4登录MySQL服务器—访问控制概述作为Web数据库,客户端在访问数据库之前需要对MySQL进行连接和对所选用的数据库进行选择过程换意味着所有访问者(或应用程序)在事先需要在MySQL中进行注册和操作权限的分配,并在客户端程序的连接过程中对客户身份进行验证在每一项对数据库的操作进行之前,由MySQL依据所注册的权限需要对客户端或程序是否具备相应的操作权限进行核查后再决定执行与否这个过程实际上在所有大型数据库产品的运用中都是存在的,但所表现的形式各有不同第6章通过PHP访问MySQL数据库42-5登录到MySQL服务器---举例当要访问一个MySQL服务器时,无论是通过何种方式,都无例外地需要在服务器上进行登录或与其建立连接MySQL客户程序一般还要求用户提供连接参数,其中包括:需要联接的主机、用户名和口令。c:\mysql\bin\mysql-urootpasswordsesame上例是使用Windows下的MySQL客户端程序连接本机上的MySQL服务器第6章通过PHP访问MySQL数据库42-6登录到MySQL服务器—登录指令MySQL客户端连接命令的完整语法如下所示:Shellmysql[-hhost_name][-uuser_name][-pyour_pas]在“[]”之间包含了可选的参数如果命令没有连接参数,mysql使用默认值:默认主机名是localhost默认用户名:UNIX登录名或ODBC(Windows)如果没有-p选项,则口令为NULL第6章通过PHP访问MySQL数据库42-7登录到MySQL服务器对一个UNIX或Liunx系统中的用户guest,下列命令是等价的:shellmysql-hlocalhost-uguestshellmvsq-hlocalhostshellmvsq-uguestshellmysql用户安装完之后的第一次登录,通常使用root帐号,而此时默认的root密码往往是“mysql”,建议用户更改root密码,以保证系统的安全第6章通过PHP访问MySQL数据库42-8登录到MySQL服务器对于MySQL的一些基本命令可以在登录之后用help命令进行查看,用户将看到如下信息:mysql?第6章通过PHP访问MySQL数据库42-9MySQL的存取权限系统(一)MySQL存取权限系统的主要功能是为某个用户从给定主机上连接到MySQL服务器提供登录认证和赋予相应的资源访问权限同样作为网络应用程序,MySQL使用用户名和口令的方法与UINIX或Windows下网络应用程序使用的方式有很多不同之处第6章通过PHP访问MySQL数据库42-10MySQL的存取权限系统(二)MySQL认证的用户名,与UNIX用户名(登录ID)或Windows用户名无关MySQL用户名最长可以是16个字符一般地UNIX用户名限制为8个字符MySQL口令与UNIX口令没关系:用户登录到一台UNIX机器的口令与用户在那台机器上存取一个数据库使用的口令之间没有必然的关联MySQL口令使用的加密算法与UNIX登录口令所用的不同第6章通过PHP访问MySQL数据库42-11MySQL的存取权限系统(三)在MySQL中,权限信息用user、db、host、tables_priv和columns_priv表存储在MySQL数据库管理系统中(名为mysql的数据库中)MySQL数据库服务器启动时,需要从这些表中读取权限信息第6章通过PHP访问MySQL数据库42-12第6章通过PHP访问MySQL数据库42-13MySQL的存取权限系统(四)如果用户要在MySQL中进行表操作(如对数据库中的表进行增、删、改、查等操作)在这些权限设置信息中,必须事先在对相关数据库/表的select、insert、update和delete的权限进行设置第6章通过PHP访问MySQL数据库42-14其他权限的含义(一)INDEX权限允许用户创建或删除索引ALTER权限允许用户使用ALTERTABLE即更改表结构。CREATE和DROP权限允许用户创建新的数据库和表或删除现存的数据库和表GRANT权限允许用户把用户自己拥有的那些权限授给其他用户。[1]FILE权限给予用户用LOADDATAINFILE和SELECT…INTOOUTFILE语句读写服务器上的文件,任何被授予这个权限的用户都能读写MySQL服务器上能读写的文件第6章通过PHP访问MySQL数据库42-15其他权限的含义(二)其余的权限用于管理性操作,它使用mysqladmin.exe客户端程序加以实施表6-2显示了允许用户执行的mysqladmin命令参数与管理性权限的关系。第6章通过PHP访问MySQL数据库42-16其他权限的含义(三)RELOAD命令告诉服务器再读入授权表REFRESH命令刷新所有表并打开和关闭记录文件ALTER权限可以用于通过重新命名表来改换权限系统FILE权限可以用在服务器上,将文本文件中的数据载入数据库表,其内容可以用SELECT存取SHUTDOWN权限关闭服务器第6章通过PHP访问MySQL数据库42-17其他权限的含义(四)PROCESS权限,用户可用PROCESSLlST命令显示在服务器内执行的进程信息。KILL命令可中止服务器进程,每个用户总是能显示或中止各自的进程,但是用户需要PROCESS权限来显示或中止其他用户启动的进程Process权限被用来察看当前执行的查询命令,包括设定或改变口令查询第6章通过PHP访问MySQL数据库42-18其他权限的含义(五)对mysql数据库(MySQL系统的管理专用数据库)的权限设置有可能被用来改变口令和其他存取权限信息由于密码在数据库中是可见的,只要拥有了足够的权限,可以将全部的密码删除,这样就可以自动的拥有管理员的权限所以,在授予用户权限时要特别注意这点第6章通过PHP访问MySQL数据库42-19其他权限的含义(六)另外还有一些是MySQL不能设置的权限,例如:不能明确地设置某个用户不能访问任何资源不能指定一个用户只有在一个数据库中建立和删除表的权限而没有建立和删除这个数据库的权限第6章通过PHP访问MySQL数据库42-20其他权限的含义(七)当用户连接到MySQL数据库后,用户的身份就会根据主机名和用户名来确认,然后权限系统赋予用户相应的操作权限权限控制要经过以下两个阶段进行:1.数据库服务器对当前登录用户进行检查,以确定是否进行连接2.用户连接到数据库服务器后,系统会对用户的每一个请求进行检查,以判断该用户是否具有权限来执行这个操作。如果可以,那么就执行操作,如果权限不够,则发出提示信息,并终止该操作第6章通过PHP访问MySQL数据库42-21常用MySQL数据库管理操作与xBase不同的是MySQL数据库有全面的安全管理机制MySQL的安全系统与许多网络操作系统(如UNIX、NetWare、WindowsNT)的安全管理系统有类似之处,如登录管理、资源访问的权限管理等第6章通过PHP访问MySQL数据库42-22添加新用户和授权可以用两种不同的方法增加用户:通过使用GRANT语句或直接操作MySQL授权表,一般使用GRANT语句比较稳妥例6-2显示出如何使用mysql客户程序在MySQL中加入新用户首先,数据库管理员必须使用root用户名与MySQL连接,并且root用户必须对mysql数据库有insert权限和reload管理权限第6章通过PHP访问MySQL数据库42-23用GRANT语句增加新用户和权限:shellmysql-urootpasswordsesamemysqlGRANTALLPRIVILEGESON*.*TOguest@localhostIDENTIFIEDBY'something'WITHGRANTOPTION;mysqlGRANTALLPRIVILEGESON*.*TOguest@%IDENTIFIEDBY'something'WITHGRANTOPTION;第6章通过PHP访问MySQL数据库42-24添加新用户和授权mysqlGRANTRELOAD,PROCESSON*.*TOadmin@localhost;admin被授予reload和process管理权限。这些权限允许admin用户执行“mysqladminreload”,“mysqladminrefresh”,“mysqladminflush-*”和“mysqladminprocesslist”命令这里没有授予admin用户任何与数据库操作有关的权限,不过必要的话,可以在以后通过另一个GRANT语句追加授权第6章通过PHP访问MySQL数据库42-25PHP中的MySQL操作而在Web的应用中,用户是通过动态网页中的PHP程序或数据库访问函数“间接”地对MySQL服务器进行访问第6章通过PHP访问MySQL数据库42-26登录和退出MySQL的PHP函数用来登录MySQL数据库的PHP操作函数有两个,分别是:mysql_connect()和mysql_pconnect()。它们的格式分别为:intmysql_connect(string[hostname][:port],string[username],string[password]);intmysql_pconnect(string[hostname][:port],string[username],string[password]);登录成功后,这两个函数都可以返回一个登录号(link_identifier),如果登录失败,则返回false第6章通过PHP访问MySQL数据库42-27登录MySQL数据库的PHP函数举例?$connect=mysql_connect('localhost','root','sesame');echo$connectBR;?程序运行的结果是:Resourceid#1第6章通过PHP访问MySQL数据库42-28mysql_pconnect函数使用mysql_pconnect开启数据库时,程序会先寻找是否曾经执行过本函数,若执行过则传回先前执行时产生的ID另一个不同的地方是该函数无法使用mysql_close()退出MySQL第6章通过PHP访问MySQL数据库42-29登录和退出MySQL的PHP函数用户可以使用mysql_close()[1]函数。mysql_close()函数的语法格式如下:intmysql_close(int[link_identifier]);同mysql_connect()函数一样,如果操作成功,会返回true;否则,会返回false第6章通过PHP访问MySQL数据库42-30使用PHP函数测试登录和退出MySQL?$connect=mysql_connect('localhost','roo