MySQL是一种精巧的,多用户和多线程的中小型SQL数据库系统,由一个服务器守护进程mysqld和很多不同的客户程序和库组成.现在形成了一个"Linux+Apache+PHP+MySQL"构建电子商务网站的黄金网站的黄金组合.
MySQL不是开放源代码的产品,但在某些情况下可以自由使用.由于它的强大功能,灵活性,丰富的应用编程接口,以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐.
MySQL的特点
MySQL具备非常好的性能,甚至可以和目前的所有商用数据库系统相媲美,MySQL最主要的优点就是"简单,高效,稳定性高".下面是具体的特点:
MySQL可以运行在不同的平台上,如:WINDOWS98/NT/200/2003和RED HAT LINUX.而且在UNIX/LINUX环境下支持多线程的运行方式.
MySQL提供对多种数据库的支持,如:Oracle,Informix,Sybase,也提供对ODBC的支持.
MySQL可以使用多种语言,如:C,C++,JAVA,PERL,PHP等.
MySQL提供非常完善的权限系统
一.安装和启动MySQL
1.安装SQL
先查看安装没.
安装好的可以看到如图的安装包.
2.启动MySQL
两种启动方法.
查看运行状态
如果希望MySQL在下次系统启动时自动启动,可用下面的命令:
#ntsysv或在services菜单中将mysqld 选中.
二.MySQL实用程序简介
MySQL安装完成之后,可以在/usr/bin路径下找到MySQL实用程序.
safe_mysqld :一个脚本文件,用于以安全的方式启动mysqld 守护进程,其安全包括:当一个错误发生时,有能力重启服务器并且将运行时的信息记录到一个日志文件中.
mysql :一个基于命令行的MySQL客户端程序
mysql_install_db :用于以缺省权限创建MySQL权限表,该程序通常仅在系统上第一次安装MySQL时执行一次
mysqladmin :用于执行数据库的管理操作,如创建或删除数据库,加载授权表和停止MySQL服务等.也可以用于查看MySQL版本,进程和状态信息
myisamchk:用于描述,检查,优化和修复MySQL中和各个表,并可以显示表的相关信息
mysqlshow:用于显示数据库,表,列和索引等信息
mysqlaccess:一个脚本,用于检查对主机,用户和数据库组合的存取权限
mysqlbug:MySQL错误报告脚本,用于向MySQL邮件列表中添加错误报告
mysqldump:用于将MySQL数据库中的数据导出一个文本文件.
mysqlmport:提供一个到SQL语句LOAD DATA INFILE的命令行接口,通过LOAD DATA INFILE命令,可以将文本文件导入到数据库中.
make_binary_release:用于制作一个编译MySQL的二进制版本
msql2mysql:一个外壳脚本,用于转换MSQL程序到MySQL
replace:一个实用程序,由msql2mysql使用.
三.MySQL数据库的管理与维护.
1.创建数据库
在MySQL数据库系统中,可以使用两种方法来创建数据库,即在客户端程序mysql环境下使用SQL语句CREATE DATABASE或在LINUX的SHELL环境下使用管理工具mysqladmin的子命令CREATE.
创建后查看数据库.可看到存在3个数据库.
这是使用管理工具mysqladmin创建数据库.这样两种方法都介绍了.
2.删除数据库.
同样可以利用上面两种方法实现.
这是使用SQL语句实现
这是使用工具实现.
3.创建和删除表
数据库创建之后,可使用如下命令来在现存的数据库中创建或删除表
在数据库sales中创建四个表.
创建完成之后查看有哪些表,然后进行删除表.
4.查看表结构.
表创建完成后,可使用如下命令来查看表的结构.
可以看到表中的数据结构.
5.向表中添加并查看数据.
添加后进行查看表中的数据.
6.维护索引
MySQL数据库表的所有列类均可创建索引,一个表最多可有16个索引,同时,MySQL可以在一个表的多个列上创建索引,一个索引可以由最多15个列组成.
1)创建索引.
创建test表,同时使用name列的前10字符创建索引.创建后进行查看.
使用CREATE INDEX语句为现存表employee中的name列创建索引.
使用ALTER TABLE语句为现存表products中的name列创建索引.
2)删除索引
可以使用DROP INDEX或ALTER TABLE语句.
使用SHOW查看的时候,可知被删除了.
使用ALTER语句删除.
四.MySQL数据目录和日志文件
1.MySQL数据目录的位置.
默认情况下,通过RPM包安装的MySQL数据目录为/var/lib/mysql.
查看配置文件my.cnf 的内容.
使用工具查看.
2.MySQL数据目录的结构.
MySQL数据目录中包含了由服务器管理的所有数据库和表,它们被组织成一个树状结构,该结构是通过LINUX文件系统的层次结构用简单的方式实现.
MySQL每个数据库都对应自己的数据库目录,这些数据库目录作为子目录存储在MySQL数据目录中,与其所代表数据库名称相同.
可看到有3个数据库目录.
数据库中的表对应数据库目录中的文件,每个表在数据库目录中都对应3个文件.一个是格式文件,一个数据文件和一个索引文件.每个文件的基本名称都与该表相同.扩展名指明该文件的类型.如下:
格式文件:.frm
数据文件:.MYD
索引文件:.MYI
通过下面的操作可以查看数据库目录中的表文件.
显示mysql数据库中目录的表文件.
3.MySQL日志文件.
这些文件提供了关于服务器运行的重要信息,对数据库的管理和维护是非常重要的.
1)错误日志.包含了服务器写入标准错误输出设备的所有消息,同时还包含了MySQL服务的启动和关闭事件.错误日志是由实用程序safe_mysqld产生,因此在通过调用safe_mysqld启动MySQL服务时,错误日志才会存在.
默认情况下,错误日志并不存储在MySQL数据目录中,是由于配置文件/etc/my.cnf中指定为/var/log/mysqld.log.
可看到err-log这一行指定了错误日志文件为/var/log/mysqld.log.
这是用命令#less /var/log/mysqld.log返回错误日志的内容.其中对MySQL服务的启动和关闭做了记录.
2)常规日志和更新日志.常规日志是用来记录有关MySQL服务器运行的常规信息,包括用户的连接,查询以及其它各种事件.更新日志用来记录修改数据库的查询信息.
常规日志和更新日志默认情况下并没启用.
可根据需要启用.
添加log log-update选项来启用更新日志.
五.MySQL数据库用户和权限
MySQL提供了一个非常实用的权限系统,用于管理和控制某个用户使用其所提供的主机名,用户名和密码能否连接到指定的数据库服务器,能否打开所需数据库和能否对热气进行读取,添加,修改和删除等操作.
1.系统数据库mysql
MySQL内置了一个系统数据库mysql,其中包含存放着权限系统所需要的数据的授权表.当MySQL服务器启动时,会首先读取系统数据库mysql中的授权表,亲将表中相关的数据库装入内存;当用户连接数据库服务器并对数据库进行存取操作时,MySQL会根据这些表中的数据做相应的权限控制.因此,在设置用户的存取权限时,必然要对mysql数据库有关的表进行修改.
mysql数据库中用于权限系统的授权表主要包括user,db,host,tables_priv,columns_priv.可以启用客户端程序mysql.执行show tables命令进行查看.
2.MySQL权限系统的工作原理
MySQL权限系统保证所有的用户可以严格按照事先分配好的权限对数据库进行允许的操作.
1)第一阶段--连接验证阶段.
用户的身份根据两个信息来确定,即从哪个主机连接和使用哪个MySQL用户.连接验证需要使用系统数据库mysql中user表的Host,User和Password 共3个范围字段.
2)第二阶段--请求验证阶段.
这一阶段,MySQL权限系统将会检查用户所发出的每一个对于数据库的操作请求,以确定用户是否具有足够的权限来执行这一操作.
3.连接MySQL服务器
要想使用mysql客户端程序对数据库进行管理,首先需要连接将要管理的MySQL服务器.连接时,需要指定主机名,用户名和口令.
4.MySQL的初始权限.
MySQL安装完成之后,在启动MySQL服务时,会加载授权表中的初始权限设置,这些初始权限存储在user和db表中.主要包括:
内置一个口令为空的root用户,是超级用户.使用root用户连接服务器时,必须由本地主机(localhost)发出.
内置一个匿名用户,该用户可对有一个名为"test"或名称以"test_"开始的数据库进行任何操作.使用匿名用户连接服务器时,也必须由本地主机发出.
其它权限均被拒绝.
5.设置MySQL超级用户root口令.
将口令设置为crq
看最后一个是将匿名用户删除.
6.设置MySQL数据库权限示例.
1)添加新的用户权限.
使用root登录后,使用GRANT语句来添加一个可以从本地主机连接到MySQL服务器的用户crq,但连接时必须使用口令crqpass.
使用同样的方法添加一个可以从其它任何地方连接到MySQL服务器的超级用户crq,使用口令为crqpass.
2)授予用户特定的权限
使用GRANT语句添加一个可以从本地主机连接到MySQL服务器的用户yang,并且授予其针对sales数据库中enployee表的select 和insert权限.
查看数据库中的表.
退出重新连接数据库服务器.
表明当前用户yang仅针对表employee具有操作权限,用户不具有操作权限的表对于该用户来说是不可视的,不会出现在列表中.
表明当前用户对表有SELECT权限.
表明当前用户有INSERT权限.
当前用户不允许对employee表的DELETE权限.
3)撤消用户权限.如果想撤消用户权限,需要使用REVOKE语句.
然后使用>REVOKE INSERT ON sales.employee FROM ;
然后插入数据的时候就不行了,说明yang 针对employee表的insert权限已被撤消.
7.MySQL数据库的备份和恢复
把数据库sales备份到mysql.bak目录.然后查看备份成功.
先删除数据库sales,再创建. sales.
可看到恢复成功.
到这里全部介绍完毕.
本文出自 “yangming.com” 博客,转载请与作者联系!