一.MySQL简介1什么是MySQL1)MySQL是一个真正的多用户、多线程SQL数据库服务器。
2)MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序MySQLd和很多不同的客户程序和库组成3)MySQL主要目标是快速、健壮和易用。
4)MySQL是开源数据库中的杰出作品,应用广泛,适应于多种软硬件平台,满足中小应用的需求。
2MySQL的特点1)完全多线程,可使用多CPU。
2)可运行在多种不同的平台上,如:AIX,DEC,FreeBSD,HP-UX,Linux,MacOS,SCO-UNIX,SUNSolaris,Tru64Unix,Windows系列。
3)提供多种编程语言的接口,如C/C++,Java,Perl,PHP,Python等。
4)提供ODBC访问接口。
5)支持多种字段类型:1,2,3,4和8字节有符号/无符号整数FLOAT、DOUBLECHAR、VARCHARDATE、TIME、DATETIME、TIMESTAMPTEXT、BLOB、SET和ENUM等类型。
6)支持各种运算符和内部函数和聚合函数,用于各种高级SQL查询。
7)快速索引和基于线程的快速内存分配,保证查询和操作的高效率。
8)非常灵活且安全的权限和口令系统,并且它允许基于主机的认证。
口令是安全的,口令传送被加密。
9)支持大数据量处理,表现非常稳定。
3MySQL的表类型)非事务安全型表ISAM早期MySQL版本的缺省表类型,已不用。
MyISAM这是现在MySQL的缺省表类型。
它基于ISAM,但有很多有用的扩展。
●MyIASM表小于IASM表,所以使用较少资源。
●MyIASM表在不同的平台上二进制可移植。
●支持更大的数据量。
HEAPMySQL中存取数据最快的表。
是因为他们使用存储在动态内存中的一个哈希索引。
不过如果MySQL或服务器崩溃,数据将丢失。
可以用作临时表数据处理。
MERGE一个MERGE表实际上是具有相同的字段和关键字的MyISAM表的集合,合并成一个表,主要是为了效率原因。
这样可以提高速度、搜索效率、修复效率并节省磁盘空间。
2)事务安全型表Berkeley DB(DBD)由Sleepycat软件公司开发。
它提供MySQL用户期待已久的功能-事务控制。
事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行。
InnoDBInnoDB是MySQL上第一个提供外键约束的引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和Oracle一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。
InnoDB的设计目标是处理大容量数据时最大化性能,它的CPU利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。
4MySQL的权限系统1)MySQL的存取权限MySQL权限系统的主要功能是验证用户,并且赋予该用户在一个数据库上select、insert、update和delete的权限。
MySQL用户名独立于操作系统(Unix/Windows)用户名。
用户名最长可以是16个字符。
2)MySQL的登录mysql[-h host_name][-u user_name][-pyour_pass]mysql[--host=host_name][--user=user_name][--password=your_pass]其中a)缺省主机名是localhost;b)缺省用户名是你的Unix登录名;c)-h和-u可以与主机和用户名连写d)-p后与口令之间没有空格例如:mysql-uroot–proot sysdb–h192.168.1.1mysql–uroot–p(提示从终端输入口令,以*回显,不暴露口令)3)MySQL的存取控制验证链接服务器基于你的身份和你是否能通过供应正确的口令验证身份来接受或拒绝连接,如果接受,则可等待请求。
a)从哪个主机连接(host)b)使用的MySQL用户名(user)c)口令是否正确(password)服务器的User表定义了可以登录的身分条目。
a)Host值可以是主机名或IP地址,'localhost'指本地主机。
b)在Host字段里可以使用通配符字符“%”和“_”。
c)Host值‘%’匹配任何主机名,一个空白Host值等价于‘%’。
表示任何主机都能利用该身分连接到服务器。
User表条目定义举例:Host值User值被条目匹配的连接'''fred'fred,从连接''''任何用户,从连接'%''fred'fred,从任何主机连接'%'''任何用户,从任何主机连接'%''fred'fred,从在域的任何主机连接'x.y.%''fred'fred,从、,等联接。
(这或许无用)'144.155.166.177''fred'fred,从有144.155.166.177IP地址的主机连接'144.155.166.%''fred'fred,从144.155.166C类子网的任何主机连接请求证实对验证通过的连接上来的每个请求,服务器检查是否有足够的权限来执行。
授权用Grant和Revoke来操作。
操作请求的权限通过下列表中的信息来验证:●User表●Db表●Host表●Tables_priv表●Columns_priv表MySQL中的权限项目select表:查询drop数据库或表:删除insert表:插入grant数据库或表:授权update表:新建references数据库或表:关联delete表:删除reload服务器管理:重载index表:索引shutdown服务器管理:关闭alter表:改变process服务器管理:进程create数据库、表或索引:创建file服务器文件:存取二.MySQL的安装(for solaries)1安装准备1)从MySQL的官方网站下载MySQL-standard-sun-solaris-sparc.tar.gz2)执行su命令,成为root3)将目录切换至安装目录,解压安装包$>cd/usr/local$>gunzip-d-c MySQL-standard-sun-solaris-sparc.tar.gz|tar xvf(创建一个名为“MySQL-standard-sun-solaris-sparc”的目录)4)安装布局解压后在指定的安装地点自动建立如下目录目录目录的内容“bin”客户程序和MySQLd服务“data”日志文件,数据库“include”包含(头)文件“lib”库文件“scripts”MySQL_install_db:安装初始库和权限“share/MySQL”错误消息文件“sql-bench”基准程序5)在系统中增加一个用户为MySQL$>groupadd MySQL$>useradd–g MySQL MySQL6)将/usr/local/bin的路径加入到环境变量path中(修改.profile),以便shell能够找到MySQL7)创建一个指向MySQL的符号连接,使安装更方便.$>ln-s MySQL-standard-sun-solaris-sparc MySQL2安装1)进入安装目录$>cd MySQL2)创建MySQL授权表$>scripts/MySQL_install_db3)将目前目录下的所有档案与子目录的拥有者设为root,将所有文件的用户组改为MySQL $>chown–R root.$>chown–R MySQL data$>chgrp–R MySQL.4)创建sys_data目录,并在sys_data下创建目录ibdata和iblogs$>mkdir sys_data$>mkdir sys_data/ibdata$>mkdir sys_data/iblogs5)将f拷贝至系统目录的etc目录下,并改名为f$>cp support-files/f/etc/f6)修改f文件$>vi/etc/f3优化配置f1)根据机器内存大小推荐以下配置机器内存256MB512MB1GBmax_connections50100200read_buffer_size256K1M2Msort_buffer_size512K1M2Mkey_buffer16M32M128Minnodb_buffer_pool_size32M64M128Minnodb_log_file_size8M16M32Minnodb_log_buffer_size8M8M16Minnodb_additional_mem_pool_size10M20M40M2)配置原则key_buffer根据MyISAM类型表的数量多少设置其为RAM的5-50%,但要保证key_buffer +innodb_buffer_pool_size<RAM的80%innodb_buffer_pool_size设置为RAM的50-80%innodb_log_file_size设置为innodb_buffer_pool_size的25%innodb_log_buffer_size要大一些,如8Minnodb_buffer_pool_size+key_buffer+max_connections*(sort_buffer_size+read_buffer_size)+max_connections*2MB不能接近或大于机器内存3)修改my.ini或f文件中的basedir和datadir两个参数,basedir表示MySQL的安装目录,datadir表示系统数据安装目录。
设置为:basedir=/usr/local/MySQL/datadir=/usr/local/MySQL/datainnodb_data_home_dir=/usr/local/MySQL/sys_data/ibdatainnodb_log_group_home_dir=/usr/local/MySQL/sys_data/iblogsinnodb_log_arch_dir=/usr/local/MySQL/sys_data/iblogs4运行MySQL 服务器$>MySQLd--user=root&5工程化配置MySQL1)运行MySQL,进入MySQL$>MySQL–uroot-p2)更改root口令MySQL>set password for root@localhost=password('root');MySQL>update user set password=password('test')where user='root';MySQL>delete from er where user="";3)创建数据库MySQL>create database sysdb;4)增加用户MySQL>grant all privileges on*.*to dwzlys identified by'sylzwd'with grant option;(增加一个名为dwzlys且密码为sylzwd的用户)MySQL>grant all privileges on*.*to sysadmin identified by'adminsys'with grant option;(增加一个名为sysadmin且密码为adminsys的用户)5)在sysdb数据库中创建数据库对象$>MySQL-uroot-proot sysdb<source filepathname用于建表和初始化数据,其中filepathname为脚本文件名称。