MySQL入门完全指南及Linux系统下基本的安装教程

我们来了解一下MySQL的基本特性:

1.内部构件和可移植性

  • 使用C和C++编写
  • 用众多不同的编译器进行了测试
  • 能够工作在众多不同的平台上。请参见2.1.1 “MySQL支持的操作系统”。
  • 使用GNU Automake、Autoconf和Libtool进行移植。
  • 提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API。
  • 采用核心线程的完全多线程 如果有多个CPU,它能方便地使用这些CPU。
  • 提供了事务性和非事务性存储引擎。
  • 使用了极快的“B树”磁盘表(MyISAM)和索引压缩。
  • 添加另一个存储引擎相对简单。如果打算为内部数据库添加一个SQL接口,该特性十分有用。
  • 极快的基于线程的内存分配系统。
  • 通过使用优化的“单扫描多连接”,能实现极快的连接。
  • 存储器中的哈希表用作临时表。
  • SQL函数是使用高度优化的类库实现的,运行很快。通常,在完成查询初始化后,不存在存储器分配。
  • 采用Purify(商业内存溢出检测器)以及GPL工具Valgrind(http://developer.kde.org/~sewardj/)测试了MySQL代码。
  • 服务器可作为单独程序运行在客户端/服务器联网环境下。它也可作为库提供,可嵌入(链接)到独立的应用程序中。这类应用程序可单独使用,也能在网络环境下使用。

2.列类型

众多列类型: 带符号/无符号整数,1、2、3、4、8字节长,FLOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,TIME,DATETIME,TIMESTAMP,YEAR,SET,ENUM,以及OpenGIS空间类型。请参见第11章:列类型。

定长和可变长度记录。

3.语句和函数

在SELECT和查询的WHERE子句中,提供完整的操作符和函数支持。例如:

mysql> SELECT CONCAT(first_name, ' ', last_name)
  -> FROM citizen
  -> WHERE income/dependents > 10000 AND age > 30;

对SQL GROUP BY和ORDER BY子句的全面支持。支持聚合函数(COUNT(), COUNT(DISTINCT ...),AVG(),STD(),SUM(),MAX(),MIN()和GROUP_CONCAT())。

支持LEFT OUTER JOIN和RIGHT OUTER JOIN,采用标准的SQL和ODBC语法。

按照标准SQL的要求,支持表别名和列别名。

DELETE、INSERT、REPLACE和UPDATE返回更改(影响)的行数。连接到服务器时,可通过设置标志返回匹配的行数。

MySQL的SHOW命令可用于检索关于数据库、数据库引擎、表和索引的信息。EXPLAIN命令可用于确定优化器处理查询的方式。

函数名与表名或列名不冲突。例如,ABS是有效的列名。唯一的限制在于,调用函数时,函数名和随后的符号“(”之间不得有空格。请参见9.6 “MySQL中保留字的处理”。

可以将不同数据库的表混合在相同的查询中(就像MySQL 3.22中那样)。

4.安全

十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。

5.可伸缩性和限制

处理大型数据库: 我们使用了MySQL服务器和含5千万条记录的数据库。我们还听说,有些用户将MySQL用于含60000个表和约50亿行的数据库。

每个表可支持高达64条索引(在MySQL 4.1.2之前为32条)。每条索引可由1~16个列或列元素组成。最大索引宽度为1000字节(在MySQL 4.1.2之前为500)。索引可使用具备CHAR、VARCHAR、BLOB或TEXT列类型的列前缀。

6.连接性

在任何平台上,客户端可使用TCP/IP协议连接到MySQL服务器。在Windows系统的NT系列中(NT、2000、XP或2003),客户端可使用命名管道进行连接。在Unix系统中,客户端可使用Unix域套接字文件建立连接。

在MySQL 4.1和更高的版本中,如果是以“--shared-memory”选项开始,Windows服务器还支持共享内存连接。客户端可使用“--protocol=memory”选项,通过共享内存建立连接。

Connector/ODBC (MyODBC)接口为使用ODBC(开放式数据库连接性)连接的客户端程序提供了MySQL支持。例如,可以使用MS Access连接到你的MySQL服务器。客户端可运行在Windows或Unix平台上。提供了MyODBC源。支持所有的ODBC 2.5函数,以及众多其他函数。

Connector/J接口为使用JDBC连接的Java客户端程序提供了MySQL支持。客户端可运行在Windows或Unix平台上。提供了Connector/J源码。

7.本地化

服务器可使用多种语言向客户端提供错误消息。请参见5.10.2节,“设置错误消息语言”。

对数种不同字符集的全面支持,包括latin1 (cp1252)、german、big5、ujis等。例如,在表名和列名中允许使用斯堪的纳维亚字符‘å'、‘ä'和‘ö'。从MySQL 4.1开始,提供了Unicode支持。

所有数据均以所选的字符集保存。正常字符串列的比较不区分大小写。

分类是根据所选的字符集(默认情况下,使用瑞典校对)进行的。启动MySQL服务器时,可更改该项设置。要想查看高级分类的示例,请参见Czech分类代码。MySQL服务器支持众多不同的字符集,这类字符集可在编译时和运行时指定。

8.客户端和工具

MySQL服务器提供了对SQL语句的内部支持,可用于检查、优化和修复表。通过mysqlcheck客户端,可在命令行上使用这类语句。MySQL还包括myisamchk,这是一种很快的命令行实用工具,可用于在MyISAM表上执行这类操作。请参见第5章:数据库管理。

对于所有MySQL程序,均能通过“-help”或“-?”选项调用,以获取联机帮助信息。

MySQL在Linux上的安装:

1,rpm包形式
(1) 操作系统发行商提供的
(2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mysql.com/downloads
关于MySQL中rpm包类型的介绍:
 MySQL-client         客户端组件
 
 MySQL-debuginfo      调试MySQL的组件 
 
 MySQL-devel          想针对于MySQL编译安装PHP等依赖于MySQL的组件包
 
 MySQL-embedded       MySQL的嵌入式版本
 
 MySQL-server         共享库
 
 MySQL-shared         共享库
 
 MySQL-shared-dompat  为了兼容老版本的共享库
 
 MySQL-test           MySQL的测试组件(在线处理功能)
安装方法:
首先可以从安装光盘中或者到mysql的网站上下载对应版本的rpm包如下:

MySQL-server-community-5.5.28-1.rhel5.i386.rpm 

MySQL-client-community-5.5.28-1.rhel5.i386.rpm

接着我们可以使用rpm命令进行安装:

rpm -ivh MySQL-server-community-5.5.28-1.rhel5.i386.rpm 

rpm -ivh MySQL-client-community-5.5.28-1.rhel5.i386.rpm

补充一点: 
-h 使用符号#显示安装进度
 
-v 报告每一步操作的情况

2,通用二进制包
(1)新建用户以安全方式运行进程:

# groupadd -r mysql 

# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql 

# chown -R mysql:mysql /mydata/data

(2)安装并初始化mysql-5.5.28
首先下载平台对应的mysql版本至本地,这里是32位平台,因此,选择的为mysql-5.5.28-linux2.6-i686.tar.gz
#

 tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local 

# cd /usr/local/ 

# ln -sv mysql-5.5.28-linux2.6-i686 mysql 

# cd mysql 

# chown -R mysql:mysql . 

# scripts/mysql_install_db --user=mysql --datadir=/mydata/data 

# chown -R root .

(3)为mysql提供主配置文件:

# cd /usr/local/mysql 

# cp support-files/my-large.cnf /etc/my.cnf

(4)修改配置文件:
修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:

thread_concurrency = 2

另外还需要添加如下行指定mysql数据文件的存放位置:

datadir = /mydata/data

(5)为mysql提供sysv服务脚本:

# cd /usr/local/mysql 

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

(6)添加至服务列表:

# chkconfig --add mysqld 

# chkconfig mysqld on

(7)而后就可以启动服务测试使用了。

# service mysqld start

3,源码编译
(安装编译方式有点改变,配置过程无太大变动,所以后面不详细介绍各个步骤了)
若想在5.0系列的红帽系统上进行源码编译安装MySQL必须借助一个跨平台编译器cmake
所以:
(1)首先安装cmake
安装cmake需要用make

# tar xf cmake-2.8.8.tar.gz 

# cd cmake-2.8.8 

# ./bootstrap 

使用此脚本来检测编译环境

# make 

# make install

(2)编译安装mysql-5.5.28
使用cmake编译mysql-5.5.28,选项的方式有所改变简单介绍一下。。。
cmake指定编译选项的方式不同于make,其实现方式如下:
cmake .
 
cmake . -LH 或 ccmake .        查找可以使用的相关选项
指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql         指定安装路径
 
-DMYSQL_DATADIR=/data/mysql                     数据安装路径
 
-DSYSCONFDIR=/etc                               配置文件的安装路径
由于MySQL支持很多的存储引擎而默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1          安装INNOBASE存储引擎
 
-DWITH_ARCHIVE_STORAGE_ENGINE=1           安装ARCHIVE存储引擎
 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1         安装BLACKHOLE存储引擎
 
-DWITH_FEDERATED_STORAGE_ENGINE=1         安装FEDERATED存储引擎
 
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1 
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1        不启用或不编译EXAMPLE存储引擎
 
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
 
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
 
-DWITH_SSL=system           表示使用系统上的自带的SSL库
 
-DWITH_ZLIB=system
 
-DWITH_LIBWRAP=0
其它常用的选项:
-DMYSQL_TCP_PORT=3306                       设置默认端口的
 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock           MySQL进程间通信的套接字的位置
 
-DENABLED_LOCAL_INFILE=1                    是否启动本地的LOCAL_INFILE
 
-DEXTRA_CHARSETS=all                        支持哪些额外的字符集
 
-DDEFAULT_CHARSET=utf8                      默认字符集
 
-DDEFAULT_COLLATION=utf8_general_ci         默认的字符集排序规则
 
-DWITH_DEBUG=0                              是否启动DEBUG功能
 
-DENABLE_PROFILING=1                        是否启用性能分析功能
如果想清理此前的编译所生成的文件,则需要使用如下命令:

make clean 

rm CMakeCache.txt

编译安装

# tar xf mysql-5.5.28.tar.gz 

# cd mysql-5.5.28 

# groupadd -r mysql 

# useradd -g -r mysql mysql 

# mkdir -pv /data/mydata 

# chown -R mysql:mysql /data/mydata 

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mydata -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 

# make 

# make install

# cd /usr/local/mysql
# chown -R :mysql

更改属组

# scripts/mysql_install_db --user=mysql --datadir=/data/mydata/

指定数据存放位置

# cp support-files/my-large.cnf /etc/my.cnf 

创建配置文件
 
编辑配置文件

#vim /etc/my.cnf

添加如下行指定mysql数据文件的存放位置:

datadir = /mydata/data

创建执行脚本和启动服务

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld 

复制脚本

# chmod +x /etc/rc.d/init.d/mysqld 

执行权限

# chkconfig -add mysql 

添加到服务列表中

# service mysqld start 

启动服务

# bin/mysql  

启动mysql

(0)

相关推荐

  • MySQL入门教程(五)之表的创建、修改和删除

    MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成. 表是DB存储数据的基本单位,一个表包含若干个字段或记录.表的操作包括创建.修改和删除. 1.创建表 创建表即在已存在的数据库中创立新表.在使用USE语句选择具体数据库后,可以使用它SQL语句创建表 其中,属性名指表中字段的名称,数据类型即对应字段的数据类型,完整性约束条件指

  • MySQL中触发器入门简单实例与介绍

    创建触发器.创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中trigger_name标识触发器名称,用户自行指定: trigger_time标识触发时机,用before和after替换: trigger_event标识触发事件,用insert,update和delete替换: tbl_name标识建立触发器的表名,即在哪张表上建立触发

  • MySQL正则表达式入门教程

    我们知道,在SQL之中,可以用 like 这个谓词(表达式) 来进行模糊检索,并支持 %,?,_等占位符.但是,这个模糊检索的功能有很多限制,简单来说就是太模糊了.在MySQL中提供了 REGEXP 关键字来支持正则表达式,当然,只是一些很简单的正则啦.首先,我们构造一些测试数据. 复制代码 代码如下: -- 建表USE test;DROP TABLE IF EXISTS t_regcustomer;CREATE TABLE t_regcustomer ( id INT(10) AUTO_INC

  • MySQL新手入门指南--快速参考

    一.SQL速成 以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册. 1.创建表 表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联.创建表的基本语法如下: create table table_name (column_name datatype {identity |null|not null}, -) 其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数dataty

  • Mysql入门基础 数据库创建篇

    1.创建数据表---基础(高手跳过) 正统方法:create [TEMPORARY] table 表名 [if not exists] (创建的列项定义) [表的选项] [分区的选项];#正统的创建方式,具体的参数,请参考mysql手册,在这里不做详细的解释,只说一些比较特别的. 例: 复制代码 代码如下: create table user(id int unsigned not null auto_increment, username char(15), sex enum('M','F')

  • 快速学习MySQL索引的入门超级教程

    所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找.而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果,具体的实现方式后续本博客会出一个算法专题里面会有具体的分析讨论; Explain优化查询检测 EXPLAIN可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语

  • 21分钟 MySQL 入门教程

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据类型 五.使用MySQL数据库 登录到MySQL 创建一个数据库 选择所要操作的数据库 创建数据库表 六.操作MySQL数据库 向表中插入数据 查询表中的数据 更新表中的数据 删除表中的数据 七.创建后的修改 添加列 修改列 删除列 重命名表 删除整张表 删除整个数据库 八.附录 修改 root

  • Mysql基础入门 轻松学习Mysql命令

    一.MySQL的相关概念介绍 MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称; 列(row): 具有相同数据类型的数据的集合; 行(col): 每一行用来描述某个人/物的具体信息; 值(value): 行的具体信息, 每个值必须与该列的数据类型相同; 键(key

  • 20分钟MySQL基础入门

    开始使用 MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称; 列(row): 具有相同数据类型的数据的集合; 行(col): 每一行用来描述某个人/物的具体信息; 值(value): 行的具体信息, 每个值必须与该列的数据类型相同; 登录MySQL mysql -h 127.0.0.1 -u 用户名 -p mysql -D 所选择的数据库名

  • Python中操作MySQL入门实例

    一.安装MySQL-python 复制代码 代码如下: # yum install -y MySQL-python 二.打开数据库连接 复制代码 代码如下: #!/usr/bin/python import MySQLdb conn = MySQLdb.connect(user='root',passwd='admin',host='127.0.0.1') conn.select_db('test') cur = conn.cursor() 三.操作数据库 复制代码 代码如下: def inse

随机推荐