热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

这篇文章主要介绍了MySQL入门完全指南及Linux系统下基本的安装教程,对MySQL的基本特性有一个较为详细的整理,需要的朋友可以参考下
我们来了解一下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__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

推荐阅读
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 最适合初学者的编程语言
    本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 本文探讨了编译型语言与解释型语言的基本概念及其主要特征,分析了两种类型语言的优点与不足,并列举了各自的代表性编程语言。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 利用Python与Android进行高效移动应用开发
    通过结合Python和Android,可以实现高效的移动应用开发。首先,需要安装Scripting Layer for Android (SL4A),这是一个开源项目,旨在为Android系统提供脚本语言支持。SL4A不仅简化了开发流程,还允许开发者使用Python等高级语言编写脚本,从而提高开发效率和代码可维护性。此外,SL4A还支持多种其他脚本语言,进一步扩展了其应用范围。通过这种方式,开发者可以快速构建功能丰富的移动应用,同时保持较高的灵活性和可扩展性。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
author-avatar
手机用户2502891655
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有