Linux中,MySQL数据库基础

21 世纪,人类迈入了"信息爆炸时代",大量的数据、信息在不断产生,伴随而来的就是如何安全、有效地存储、检索和管理它们。对数据的有效存储、高效访问、方便共享和安全控制已经成为信息时代亟待解决的问题。

数据库简介

使用数据库的必要性

使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。

数据库具有以下特点。

可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。

可以有效地保持数据信息的一致性、完整性,降低数据冗余。

可以满足应用的共享和安全方面的要求。

数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解。

数据库的基本概念

数据

描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。

在数据库中,数据是以"记录"的形式按照统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把"人"和"书"混在一起存储。这样,数据的存储就能够井然有序。

如图 1.1中存储的一行数据,在数据库中称为一条"记录"(Record)。每条记录中的每一个输入项称为"列"。图 1.1中编号、姓名、性别、年龄、民族、专业都是列名。

数据库和数据库表

不同的记录组织在一起,就形成了数据库(Database,DB)的"表"(Table)。也可以说,表是用来存储具体数据的,如图1.1所示。那么数据库和表存在什么关系呢?简单地说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。

通常,数据库并不是简单地存储这些数据的,还要表示它们之间的关系。例如,书和人是存在联系的,书的作者可能就是某个人,因此需要建立书与人的"关系"。这种关系也需要用数据库来表示,因此关系的描述也是数据库的一部分。

数据库管理系统和数据库系统

数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS主要包括以下功能。

数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。

数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。

数据操纵功能:包括数据查询统计和数据更新两个方面。

数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。

通信功能:DBMS 与其他软件系统之间的通信,如Access 能与其他 Office 组件进行数据交换。

数据库系统(Database System,DBS)是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过DBMS 操作数据库,也可以通过应用程序操作数据库。

应用程序是利用 DBMS 为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应用软件。

常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨询系统等。

数据库管理员(Database Administrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA一般由业务水平较高、资历较深的人员担任。

需要注意的是数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨论中通常不严格区别。遇到此情况时,可以根据具体情况,判断出实际所指的是什么。

数据库发展史

数据库系统发展史

数据库技术的发展已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。数据库技术最初产生于 20世纪60年代中期,根据数据模型的发展,可以划分为三个阶段:第一代的网状、层次数据库系统;第二代的关系数据库系统;第三代的以面向对象模型为主要特征的数据库系统。

(1)初级阶段--第一代数据库

自 20世纪 60年代起,第一代数据库系统问世。它们是层次模型与网状模型的数据库系统,为统一管理和共享数据提供了有力的支撑。在这个阶段中,数据库的代表是 1969年 IBM公司研制的层次模型的数据库管理系统--IMS(Information Management System,信息管理系统)和 20世纪 70年代美国数据系统语言协会(CODASYL)下属数据库任务组(DBTG)提议的网状模型。

(2)中级阶段--第二代数据库

20 世纪 70年代初,第二代数据库--关系数据库开始出现。自1970年 IBM 研究员德加·考特阐述了关系模型的概念后,IBM 大力投入关系数据库的研究。关系数据库的底层实现起来比较容易,所以很快被采用,并进入了众多商业数据库的研发计划。0racle 就是当时应关系数据模型的出现而成立的一家专做(关系)数据库的公司。20世纪 80年代初,IBM公司的关系数据库系统 DB2问世,而0racle 公司也将 0racle数据库移植到桌面计算机上。这时,作为第二代数据库系统的关系数据库,开始逐步取代层次与网状模型的数据库,成为占主导地位的数据库,成为行业主流。到目前为止,关系数据库系统仍占领数据库应用的主要地位。

关系数据库系统将结构化查询语言(Structured QueryLanguage,SQL)作为数据定义语言(Data Definition Language,DpL)和数据操作语言(Data Manipulation Language,DML),它一诞生就成为关系数据库的标准语言。SQL使得关系数据库中的数据库表的查询可以通过简单的、声明性的方式进行,大大简化了程序员的工作。

关系数据库系统构筑在比较高的软件层次上,执行查询的效率普遍偏低。另外,严格的、标准的关系数据库是一个纯理论的模型。如果完全按照关系模型实现,会涉及很多方面的问题,其中一条就是效率不高。在现实环境中,考虑到商业运用的目的,数据库生产厂商各自加入了一些提高效率和提高可用性的功能,舍弃了一些不太现实的约束。不同的数据库厂商在不同基础上的选择,导致了关系数据库系统向不同方向上的变迁。例如,在这个阶段中,0racle 加入了"并行"的元素,并开始了向"关系-对象"型数据库的变迁。这样的变迁,也慢慢引出了新一代的数据库系统。

(3)高级阶段--第三代数据库

由于计算机应用的发展,计算机已从传统的科学计算、事务处理等领域,逐步扩展到工程设计、人工智能、多媒体、分布式等领域,这些新的领域需要有新的数据库支撑,而传统关系数据库系统是以商业应用、事务处理为背景而发展起来的,并不完全适用于新领域的应用,因此,需要新的数据库系统,以满足不同领域的要求。

自20世纪80年代开始,各种适应不同领域的新型数据库系统不断涌现,如工程数据库多媒体数据库、图形数据库、智能数据库、分布式数据库及面向对象数据库等,特别是面向对象数据库系统,由于其实用性强、适应面广而受到人们的青睐。20 世纪 90 年代后期,形成了多种数据库系统共同支撑应用的局面。当然,在商务应用方面,依然还是关系数据库占主流。不过,已经有一些新的元素被添加进主流商务数据库系统中。例如,0racle 支持的"关系-对象"数据库模型。

随着科学技术的发展,计算机技术不断应用到各行各业。数据存储需求的不断膨胀,对未来的数据库技术将会有更高的要求。

经典数据模型

数据是现实世界中"量"的抽象,而数据模型(Data Model)是数据特征的抽象。在数据库系统中,数据模型是它的核心与基础。数据模型表现为数据的结构、定义在其上的操作及约束条件。它从概念层次上描述了系统的静态特征、动态特征和约束条件,为数据库系统

的信息表示与操作提供了一个抽象框架。在 DBMS的发展过程中,出现了网状模型、层次模型和关系模型三种经典的数据模型。由于受限于数学基础、编程技术和硬件条件,最初出现的层次模型和网状模型与关系模型相比,在用户接口的上、中层部分更易于实现。所以,这在很长一段时间阻碍了关系模型的发展。

数据模型所描述的内容包括三方面:数据结构、数据操作和数据约束。下面简单介绍三种经典数据模型。

(1)网状模型

①数据结构

在网状模型中,数据记录组织成图的形式,使用"数据结构图"进行抽象的分析和表示。图 1.2所示的网状模型数据结构图表示的是银行客户、银行账户和银行支行三方面的一种复杂关系。

图1.2所示的网状模型抽象于图1.3所示的实际情况,它表示了下列基本关系。

一个银行客户可以拥有多个银行账号(一对多)。

一个银行账号也可以被多个客户所有(一对多)。

每个银行账户位于特定的银行支行(一对一)。

其中更蕴含着客户和银行之间多对多、多对一的关系。这样复杂的数据关系,在网状模型上可以得到很好的支持。

网状模型适合表达复杂的数据关系,也可以将数据冗余减小到最小,它的数据结构模型能直观反映现实中数据之间的联系。

②数据操作

从数据结构的定义上不难看出,网状模型的数据操作是建立在关系链基础上的导航式的

操作。针对一个特定的网状模型系统的数据结构,有可能找到最优的查询算法。但是,一旦结构发生变化,就需要新的查询办法。网状模型以图论为基础,还无法得到一个通用的、高效的解决方案。所以,随着关系模型的飞速发展和广泛应用,网状模型已经暂时失去其重要性了。

③数据约束

网状模型的数据约束是零散孤立的,或者分散在各个节点,或者集中成为一种关系链,这样容易导致不一致性或降低效率。所以,通常网状模型不具体实现数据约束,而由应用程序自身来实现数据约束。这样的情况也使得在网状模型基础上的开发变得困难重重。

(2)层次模型

①数据结构

层次模型是网状模型的一个特例。在层次模型中,数据记录组织成树的形式,使用"树结构图"进行抽象的分析和表示,适合一对多的关系模型。图1.4所示为企业组织结构的树结构图。

图1.4所示的层次模型的树结构图抽象于图1.5所示的实际情况,它包含了下列关系企业下辖多个部门(一对多)。产部门下辖多个科室(一对多)。

科室下辖多个小组(一对多)。

相对于网状模型,层次模型禁止了多对多和多对一的关系,使得它的数据结构相对简单。

②数据操作

在层次模型上的数据操作不可避免地具有网状模型的特点-一导航性。但是,由于禁止了多对一和多对多的关系,因此数据操作相对网状模型而言简单了许多。这样的结构有利于提高数据的查询效率,但数据存取上还存在着必须导航的要求。因此,层次模型的数据库在数据操作上依然比较复杂。

③)数据约束

层次模型的数据约束与网状模型相似,由于结构的简化,去掉了网状模型中多对多和多对一的关系,数据约束处理的复杂性按级数下降。所以,层次模型的数据约束可以做到适当的系统实现,但很多还是依靠应用程序本身实现。

层次模型的实现技术比关系模型优越,比网状模型简单,所以一直独领风骚。它的代表是IBM公司的IS系统。该系统曾是使用最早和最广的几个数据库之一,在历史上曾是最大的数据库之一,由于它的开发者是最早开始处理并发、恢复、完整性和高效查询等问题的人,其中的一些技术和思想自然应用到 DB2中,这是 DB2长盛不衰的根源。DB2 有许多性能是非常优秀的,与这段历史不无关系。

(3)关系模型

①数据结构

关系模型建立在关系代数的理论基础上,数据结构使用简单易懂的二维数据表,可以用简单的"实体-关系"(E-R)图米直接表示,E-R图中包含了实体(数据对象)、关系和属性三个要素。

如图1.6表示了银行客户和银行账户之间的关系。

实体:也称为实例,对应现实世界中可区别于其他对象的"事件"或"事物",如银行客户、银行账户等。

第8页共25页

实体集:具有相同类型及共享相同性质的实体集合。例如,银行所有客户的集合可以定义为"银行客户"实体集。

属性:实体所具有的某一特性,一个实体可以有多个属性。例如,"银行客户"实体集中的每个实体均具有姓名、住址、电话等属性。

联系:实体集之间的对应关系称为联系,也称为关系。例如,银行客户和银行账户之间存在"储蓄"的关系。

图1.6在关系数据库中可以简单体现为下面三个表。

表 1-1表示作为银行客户的实体集,客户编码为区分客户实体的唯一标识。

需爱注盘的是。虽然在银行客户看案,自已的账户和别人的账户完全不同,是明-的。但是,银行内部往往还是会使用内部编的来区分管理和服务等不网业务。

②数梨操作

对于数术库的用户面言。关系模型使用从关系代数上独象出来的数术库操作语言(D)进行授作。结构化查询诉宫(SL)就楚其中最藏要的一种,已经成为关系数家的标准探

第多然具冯真

作道言。它的特色是直接面向结果。院化操作多履,使得数狐挥受用的设计变都非常简单易怪。

对于数型军的物理结构面言,关最数狐昨系统的数拟结构简单、功能强、数据致立性高,理论基础警实。严临的关系数微率以二确的数术军表作为基本数术话构,利用简单现复条的索引技术实现查询算法。实现起来相对比较简单,也方便了预响技术将5L语言直接转化为有效的数捌检索算法。

国数嚣拘来关系模整的数据的束可以针对实体。也可以针对实体的国性。还可以针对关系。并可以在定义实体、实体属性和关系时全面实现。关系模型使用的数配定义酒言(IL)和关系模型在理论上对关系数配际核心实院的要次。使得败察构来可以很容易实现。但是它的效术并本高+

综合案说,关系极型相比网状极型和层次极型有更为聚实和完整的理论础。相比层次模型和网状模型面言。关系模型与用户更靠近些。面网状模型和层次模型与底层实现的结合更紫密。这样的特色也更容易让关系模型成为商业数烈率的选邦。

3.当今主流数粼昨介绍

在数飘岸技术日益发展的今天。主流数都库代表着成典的数术率技术。了解常用数率,裁俊知造数术库技术发展的程度,以及未来的大体方向,

(1)关最败粼深

20世纪80-90年代是美最数教岸产监发展和竞争的时代。在市场逐渐淘法了第一代数探陶管理系统的大局面下,S9Server、0racle、IBN[82、MyS9L,等一批根有实力的关展数梨率产品走到了主流商用数拟军的位置。

①S9. Serrer 简介

8QL.Server是Mlcrosof: 公司的数影辉产品,在设计上大利用了Wlerosoft Wimdoms操作系院的底层结构。直接面向MicrosoftTindoms。尤民是iindows系列服务器操作系快的用户。

Microsof: Windoms 拥有众多的用户群。Nicrosoft 所有的产品都漫福统一的操作习惯对数粼军基本餐念热影的Tim0s用户。可以很快地学会使用SQL.Server。上手比较容易Tin5o%最统的防用性也让数拟率管理员可以更容易、更方便、更轻检炮进行管理。

Mlcrosofe公司针对市场的需承,不断扩展其性统。使SServer作M洛数飘家服务和电子商务方面展示了强火的性晚。

C0racle 简介

0racle 公司成文于1977年。最初能是专门的数捌库公司,

199年9月。0racle会可正式发布0racle8,":"代表Interiet,这一版本中加了大量为支持[ntemot面设计的特性。这一版本为数教率用户器供了全方的Jaa支持。

在2001年6月的0racle 0pen Torld大会中,0racle 公司双布了Oracle 9l,但含院川紫群软件Rcal Appllcatiea clusters(C)和商务智统(H)功。

2004年2月。0rac1e公的发布了Oracle10版氺。""代表aid(网)。这一般的最突出特性就是加入了网略计算的功能。

2013年6月。0rae1e120正式发布。该版本提供了先进的技术堆核管理。安全的数库管理及企业经的服务管理。使金业统够快速实现私有云。

数察率领城0racle会可在很关一段时间内一直处于饭先地位。不仅数军核心相当优秀。面且其相关的支持产品也相当完善和全面。0racle晚适应70多种操作系院。这也是其能产品难以企及的优势。不过随着云计算的不断发展,以0racle为代表的传统数拟率正在遥渐失势。云数据库时代正在来临。2019年10月15日亚马进宜参本久关闭0racle数军业务。可以说亚马逊关团0racle既是自身产业特型开级的需受,它是云计算领城发展迈出的藏要一步。如今已经有总来越多的企业开始上云,雅传统数率,转面使用云数库。推动着云计算的不断发展。

国DP2 简介

1970年。I国公司的一位研究员糖加·考特发表论文,出"系型"的念。此后,他被称为"美系败都军之义"。1公司投入巨货,开晨包括"Sys1emR"和"SystemR*项日在内的关后数微库技术的研究。13年后。在"Syste"和"SystcmR*"项日的酱础上,D02 1l Syste欧 为原型面批。

[2支特从比列U,从中小型机到大型机,从I到事I(P及Sn区系统等)的各种操作系院平台。其中。服务器平台可以是05/400,AIX、05/2、田-N、Sun5olaris等操作系统,客户机平台可以是06/2或Tmoms、D0S,AIX、m-K,Sun Solaris等操作系统。但是,D82服务器演的最维运行环境还是I自己的操作系统平台0S/400。

[82 数狐库核心艾称为[82通阳服务器。可以运行于多种操作系之上。它根相应的平台环境败了调整和优化,以便法到较好的性晚。由于I会可在商川服务器领域内的长制优势。在全球500强的企业中,超过80的金业曾使用作为数率平台。

CMr59L.简介

MySQL,也是一个关系型数术库管理系统,现已校0racle公司收购。它与上述大型数库相比,有不是之处。但是这批毫没有减少它受欢迎的程度。

MyS9L,运行于Lim 操作承统之上。Apache和Kzinx作为Tb服务器。MyS9L,作为后台数狐率,HIP/Perl/Tython 作为脚本解释器。这四款软件都是免费成开源的,也就是说,金业可以不花一分钱(除人工外)就统建立起一个稳定、高速的网站系统,业内称为"LLP组合。因此,其以体积小、速度快、开源等特点,霸占了中小型网站相当大的市场。

(2)非关系数据库

非关系数据库也被称作 NoSQL(Not 0nly Sl),存储数据不以关系模型为依据,不需要固定的表格式。非关系型数据库作为关系数据库的一个补充,在日益快速发展的网站时代,发挥着高效率与高性能。

非关系型数据库的优点:

数据库高并发读写的需求

对海量数据高效率存储与访问

数据库的高扩展性与高可用性的需求

常用的非关系数据库例如Wemcached、Redis、MongoDB、HBase,我们将在后续课程中进行介绍。

关系数据库的基本概念

关系数据库系统是基于关系模型的数据库系统,是关系模型应用到数据库领域的实例化。它的基本概念来自于关系模型。

1,关系数据库的基本结构

关系数据库使用的存储结构是多个二维表格,即反映事物及其联系的数据描述是以平面表格形式体现的。

在每个二维表中,每一行称为一条记录,用来描述一个对象的信息:每一列称为一个字段,用来描述对象的一个属性。数据表与数据库之间存在相应的关联,这些关联用来査询相关的数据。图1.7所示就是一个数据表。

关系数据库是由数据表之间的关联组成的。其中:

数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及其屈性。

数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的一个。

数据表中的列通常叫做字段或者屈性,它代表相应数据库中存储对象的共有属性。

2.主键与外键

(1)主键

数据表中的每行记录都必须是唯一的,而不允许出现完全相同的记录,通过定义主键(主关键字,PrimaryKey)可以保证记录(实体)的唯一性。

键,即关键字,它是关系模型中一个非常重要的元素。主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键。

如果一个属性集能唯一地标识表的一行而又不含有多余的屈性,那么这个属性集称为候选键。表中可以有多个候选键,但是只能有一个候选键可以选作表的主键,所有其他候选键称为备用键。例如,在图1.7所示的"学生信息统计表"中,{编号}、{身份证号)或(姓名,专业编号}都可以说是候选键,可以将{编号}定义为主键。

(2)外键

一个关系数据库通常包含多个表,通过外键(Foreign Key)可以使这些表关联起来。外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。例如,在图1.8所示的"专业名称表"中,字段{专业编号)是该表的主键,在图1.7所示的"学生信息统计表"中也有一个字段(专业编号},则该字段称为"学生信息统计表"

的外键。

在图1.7和图1.8中,"专业名称表"就称为"主表","学生信息统计表"就称为"从表"。"主表"和"从表"总是成对出现的,相互之间以"外键"形成关联。

3.数据完整性规则

为了维护数据库中的数据与现实世界的一致性,关系数据库的数据与更新操作必须遵守下列四类完整性规则。

(1)实体完整性规则

实体完整性规则要求关系中的元组在主键的属性上不能有空值。如果出现空值,那么主键值就起不到唯一标识元组的作用。

例如,在图1.9所示的"学生信息表"中,每个学生都有一个编号,用来唯一标识每个学生的信息记录,这个编号往往被设为该表的主键,以方便其他数据库表的关联应用。依照实体完整性规则,"编号"字段不允许为空。

(2)域完整性规则

域完整性也称列完整性,指定一个数据集对某一个列是否有效或确定是否允许空值例如,在图1.9所示的"学生信息表"中,定义"性别"字段只能取值为"男"或,这样该列就不会输入其他一些无效的值,如"female"、"苗族"等。"22"

学生"王菡"在"学生信息表"中不存在,但是在"学生考勤表"中,却有了她的出勤记录,这样的情况是不允许出现的。

(4)用户定义的完整性规则

用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映某一具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作。

MySQL服务基础

MySQL, 是一个真正的多线程、多用户的 SQL 数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。在2008年以前,MYSQL 项目由 MYSQL AB 公司进行开发、发布和支持,之后历经 Sun 公司收购 MySQL. AB 公司,0racle 公司收购 Sun 公司的过程,目前 MySQL 项目由 0racle 公司负责运营和维护。

本节将介绍MySQL,的编译安装过程、服务控制方法,以及如何使用客户端工具访问 MySQL数据库。

MySQL的编译安装

为了确保 MySQL,数据库功能的完整性、可定制性,本小节将采用源代码编译的方式安装MySQL,数据库系统。之前在学习LANP时介绍过MySQL5.6的编译安装,本节将选用mysq1-5.7.28.tar.8z,其官方站点为https://dev.mysql.com/.

1.准备工作

在正式安装 MySQL 5.7.28之前,需要做一些准备工作。比如:安装MySL 的依赖包、

卸载 MariaDB、编译工具 cmake 的安装以及 boost 支持包的准备。(1)如果 Cent0s 7.3 已安装mariadb 数据库,必须先将其卸载,然后再开始进行源码安装。

(2)MySQL5.7源码安装需要 cmake 编译安装,所以先下载最新稳定版本的 cmake 包并安装。官方下载网站:https://cmake.org/download/。

(3)MySQL5.7需要 Boost 库,所以也需要下载安装。这里下载1590版本,这个 Boost版本和 MySQL,的版本是相对应的。注意:在 cmake 的时候不添加-DWITH_BOOST 参数时,MySQL编译时会报错并提示所需Boost版本。Boost官方下载网http://sourceforge.net/projects/boost/files/boost/.

源码编译及安装

创建运行用户

为了加强数据库服务的权限控制,建议使用专门的运行用户,如mysq1用户。此用户不需要直接登录到系统,可以不创建宿主文件夹。

解包

将下载的MySQL源码包安装,释放到/usr/src目录下,并切换到展开后的源码目录。

配置

在内容丰富、结构庞大的企业网站平台中,可能会用到多种字符集的网页,相应地数据库系统也应该支持不同的字符集编码。在配置过程中,可以将默认使用的字符集设置为utf8,并添加其他字符集的支持。

上述配置命令中,各选项的含义如下。

-DCMAKEINSTALLPREFIX:指定将MySQ,数据库程序安装到某目录下,如目录/usr/local/mysql.

-DSYSCONFDIR:指定初始化配置文件目录。

-DDEFAULT CHARSET:指定默认使用的字符集编码,如utf8。

-DDEFAULT COLLATION:指定默认使用的字符集校对规则,utf8generalci是适用于 UTF-8字符集的通用规则。

-DWITHEXTRACHARSETS:指定额外支持的其他字符集编码。

-DWITH BO0ST:指定boost库的位置,MySQL5.7版本编译安装时必须添加这个参群

(4)编译并安装

3.安装后的其他调整

(1)建立配置文件

MySQL 通过源码编译方式安装,从5.7.18版本开始在安装包内不提供默认的配置文件my-default.cnf,需要手动创建 MySQL.,配置文件/etc/my.cnf。MySQL,的配置参数非常丰富,可以根据不同的需求进行调整。这里只给出基本配置,具体内容如下。

(2)初始化数据库

为了能够正常使用MySQL 数据库系统,应以mysql 用户的身份执行初始化,指定数据存放目录等。注意:最后一行会生成一个随机的临时密码,请牢记!

(3)设置环境变量

为了方便在任何目录下使用mysql命令,需要在/etc/profile 设置环境变量。

4.添加系统服务

若希望添加 mysqld 系统服务,以便通过 systemctl进行管理,可以直接使用源码包中提供的服务脚本。找到 support-files 文件夹下的 mysql,server 脚本文件,将其复制到/etc/rc.d/init.d目录下,并改名为mysqld,然后再设置执行权限。

将 MySQL添加为 systemd 标准服务,之后方便使用"systemct1"命令进管理。

这样,以后就可以使用 systemct1 工具或直接调用/etc/init.d/mysqld 脚本来控制MySQL 数据库服务了。例如,若要启动 mysqld服务,并查看其运行状态,可以执行以下操作。

MySQL, 服务器默认通过 TCP 3306端口提供服务。通过编辑/etc/my.cnf 配置文件中[mysqld]配置段的"port = 3306"行,可以更改监听端口。

MySQL的二进制安装

MySQL,的安装方式除了常规的源码编译安装之外,最常用的还包括YUM方式安装和二进制方式安装。二进制安装方式中,包括 rpm 版本以及 glibc 版本。rpm版本就是在特定 Linux版本下编译的,如果你的Linux 版本匹配,就可以安装。如下载 Cent0s7 系统所对应编译好的rpm 包安装即可。另外一种二进制安装包是基于特定的 glibc 版本编译的,这里主要讲解基于 glibc 方式安装 MySQL。

2.二进制安装

二进制安装的版本采用跟上面编译安装的版本一样 MySQL 5.7.28。首先需要下载该软件包或者提前上传,然后再解压进行配置。

3.设定配置文件

MySQL 的配置文件跟上面编译安装的配置文件类似。

将MySQL的可执行文件写入环境变量中

4.配置 systemctl方式启动

将MySQL添加成为系统服务,通过使用systemctl米管理。在/usr/local/mysql/support-files目录下找到mysql.server 文件,将其复制到/etc/re.d/init.d目录下,改名为mysqld 并赋予可执行权限。

访问MySQL数据库

MySQL,数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问 MySQL数据库需要使用专门的客户端软件。在Linux 系统中,最简单、易用的 MySQL,客户端软件是其自带的 mysql 命令工具。

1.登录到 MySQL服务器

经过安装后的初始化过程,MySQL数据库的默认管理员用户名为"root",密码为给定的随机密码。以root 用户登录本机的 MySQL数据库,可以执行以下操作。

MySQL5.7版本默认启用了密码增强插件 validate_password,新密码必须符合密码复杂性要求。如果在测试环境中,可以禁用此插件。

2.执行 MySQL 操作语句验证成功以后将会进入提示符为"mysql>"的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。每一条MySQL操作语句以分号":"表示结束,输入时可以不区分大小写,但习惯上将 MySQL语句中的关键字部分大写。

例如,以用户名root 登录到"mysql>"环境后,执行"SHOW DATABASES;"语句可以查看当前数据库中有哪些库。

3.退出"mysql>"操作环境

在"mysql>"操作环境中,执行"EXIT"或"QUIT"命令便可以退出 mysql 命令工具,返回原来的 Shel1 环境。

相关推荐
deadknight97 分钟前
表、索引统计信息锁定和解锁
数据库·oracle
solomonzw14 分钟前
linux学习(十三)(shell编程(文字,变量,循环,条件,调试))
linux·运维·学习
yinghuabanwo14 分钟前
【1688】崖山集群YAC安装备忘
数据库·崖山yashandb
不剪发的Tony老师15 分钟前
PostgreSQL 18新特性之虚拟生成列
数据库·postgresql
网安墨雨32 分钟前
网络安全之命令
java·运维·web安全
考虑考虑32 分钟前
UNION和UNION ALL的用法与区别
数据库·后端·mysql
CL_IN1 小时前
如何将聚水潭·奇门平台数据高效集成到MySQL
android·数据库·mysql
小胖西瓜1 小时前
[解决方案] 使用十几行脚本在容器网络命名空间内并且执行宿主空间的命令
linux·网络命名空间
njsgcs1 小时前
linunx ubuntu24.04.02装libfuse2导致无法开机进不了桌面解决办法
linux·经验分享·ubuntu