linux之MySQL数据库介绍和安装

数据库介绍

1、什么是数据库

  • 数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其中的数据。

  • 由来:  过去:账本 现在:excel 当前:mysql

  • Mysql:开源:免费、源代码开放

2、数据库的种类

  • 最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。

3、生产环境常用数据库

- 生产环境主流的关系型数据库有 Oracle、Microsoft SQL Server、MySQL/MariaDB等。
- 生产环境主流的非关系型数据库有 MongoDB Memcached Redis

4、关系型数据库

1、关系型数据库介绍

  • 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。

  • 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“一对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)

  • 关系型数据库诞生距今已有 40 多年了,从理论产生到发展到实现产品,例如:常见的 MySQL 和 Oracle 数据库,Oracle 在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而 MySQL 也是不容忽视的数据库,以至于被 Oracle 重金收购了。

  • 数据的存储形式:

                        

2、关系型数据库小结

- 关系型数据库在存储数据时实际就是采用的一张二维表(和 Word 和 Excell 里表格几乎一样)。
- 市场占有量较大的是 MySQL 和 Oracle 数据库,而互联网场景最常用的是 MySQL 数据库。
- 通过 SQL 结构化查询语言来存取、管理关系型数据库的数据。
- 关系型数据库在保持数据安全和数据一致性方面很强,遵循 ACID 理论 ACID指的的事务的4大特性

5、非关系型数据库

1、非关系数据库诞生的背景

  • 非关系型数据库也被称为 NoSQL 数据库,NoSQL 的本意是 “Not Only SQL”,指的是非关系型数据库,而不是“NO SQL”的意思,NoSQL 的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。NoSQL 数据库在特定的场景下可以发挥难以想象的高效率和高性能。特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS 类型的纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NoSQL(非关系型)类的数据库就是这样的情景中诞生并得到了非常迅速的发展。

  • NoSQL 是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连续操作。

非关系型数据库小结
- NoSQL 数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。
- NoSQL 数据库为了灵活及高性能、高并发而生;
- 在NoSQL 数据库领域,当今的最典型产品为 Redis(持久化缓存)、MongoDB、Memcached(纯内存)等。
- NoSQL 数据库没有标准的查询语言(SQL),通常使用数据接口或者查询API。

3、非关系型数据库种类

1.键值(Key-Value)存储数据库
- 键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。这个表中有一个特定的键和一个指针指向特定的数据。Key-Value模型对于IT系统来说的优势在于简单、易部署、高并发。
- 典型产品:Memcached、Redis、MemcachedB
​
2、列存储(Column-Oriented)数据库
- 列存储数据库将数据存储存在列族(Column Family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果有一个 Person 类,通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。这部分数据库通常用来应对分布式存储的海量数据。键仍然存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的。
- 典型产品:Cassandra,HBase
​
3、面向文档(Document-Oriented)的数据库
- 面向文档数据库会将数据以文档的形式存储,数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON等多种形式存储。
- 典型产品:MongDB、CouchDB
​
4、图形(Graph)数据库
- 图形数据库允许我们将数据以图的方式存储。图形结构的数据库同其他行列以及刚性结构的 SQL 数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
- 典型产品:Neo4J、InfoGr id

问题回顾:1.什么是数据库、2.数据库的种类有哪些、3.我们要学的是什么

6、常用关系型数据库管理系统

1、Oracle 数据库

                

  • Oracle 前身叫 SDL,由 Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979年,Oracle 公司引入了第一个商用 SQL关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前 Oracle 关系数据库产品的市场占有率数一数二。

  • Oracle 公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商。

  • 主要应用范围:传统大企业,大公司,政府,金融,证券等等。

  • 版本升级:Oracle8i,Oracle9i,Oracle10g,Oracle11g,Oracle12c。

2、MySQL 数据库

                

  • MySQL 数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典 MySQL AB 公司。在2008年1月16号被 Sun 公司收购,后 Sun 公司又被 Oracle 公司收购。目前MySQL 被广泛地应用在 Internet 上的大中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库,甚至国内知名的淘宝网也选择弃用 Oracle 而更换为更开放的 MySQL。

  • MySQL 数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。

3、MariaDB 数据库

  • MariaDB 数据库管理系统是 MySQL 数据库的一个分支,主要由开源社区维护。开发这个 MariaDB 数据库分支的可能原因之一是:甲骨文公司收购了MySQL 后,有将 MySQL 闭源的潜在风险,因此 MySQL 开源社区采用分支的方式来避开这个风险。

  • 开发 MariaDB 数据库的目的是完全兼容 MySQL 数据库,包括 API 和命令行,使之能轻松的成为 MySQL 的代替品。在存储引擎方面,使用 XtraDB (英语:XtraDB)来代替MySQL 的 InnoDB MariaDB 由 MySQL 的创始人 Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以 10 亿美元的价格,将自己创建的公司MySQL AB卖给了 SUN,此后,随着 SUN 被甲骨文收购,MySQL 的所有权也落入Oracle 的手中,MariaDB 数据库的名称来自 MySQL 的创始人Michael Widenius 的女儿 Maria 的名字。

4、SQL Server 数据库

  • Microsoft SQL Server是微软公司开发的大型关系型数据库系统。1987年,微软和IBM合作开发完成 OS/2,IBM 在其销售的 OS/2 ExtendedEdition 系统中绑定了 OS/2 DatabaseManager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向 Sybase,同 Sybase 签订了合作协议,使用 Sybase 的技术开发基于 OS/2 平台的关系型数据库。1989年,微软发布了 SQLServer1.0 版。

  • SQL Server 的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。

  • SQL Server 可以与 Windows 操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都能得到较大的 提升。SQL Server 的缺点是只能在 Windows 系统下运行。

  • 主要应用范围:部分企业电商(央视购物),使用windows服务器平台的企业。

7、常用非关系型数据库管理系统

1、Memcached(Key-Value)

  • Memcached 是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的 Web 应用,最初版本由 LiveJoumal 的 Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来构建自己的大负载网站或提高自己的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached 是服务器端的主程序文件名。

  • 缓存一般用来保存一些经常被存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来一样),通过缓存来存取对象或数据要比在磁盘上存取快很多,前者是内存,后 者是磁盘。Memcached 是一种纯内存缓存系统,把经常存取的对象或数据缓存在 Memcached 的内存中,这些被缓存的数据被程序通过API的方式被存取,Memcached里面的数据就像一张巨大的 HASH 表,数据以 Key-Value 对的方式存在。Memcached 通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度.官方:memcached - a distributed memory object caching system

  • 由于Memcached 为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于 Memcached 开发了一个开源项目 MemcacheDB。通过为 Memcached 增加 Berkeley DB 的持久化存储机制和异步主辅复制机制,使 Memcached 具备了事务恢复能力、持久化数据存储能力和分布式复制能力,但是最近几年逐渐被其他的持久化产品替代例如Redis。

Memcached缺点:

1、存储的数据类型比较单一  只能存储字符串

2、无法持久化(没办法把数据存放到磁盘中)

2、Redis(Key-Value)

  • Redis 是一个Key-Value型存储系统。但Redis支持的存储value 类型相对更多,包括 string(字符串)、list(列表)、set(集合)和 zset(有序集合)等。这些数据类型都支持 push/pop、add/remove 及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与 Memcached 一样,为了保证效率,Redis 的数据都是缓存在内存中。区别是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 Master-Slave(主从)同步。

  • Redis 是一个高性能的 Key-Value 数据库。Redis 的出现,很大程度补偿了 Memcached 这类 Key-Value 存储的不足,在部分场合可以对关系数据库有很好的补充作用。它提供了 Python,Ruby,Erlang,PHP 客户端,使用很方便。官方:Docs

  • Redis 特点:

1. 支持内存缓存,这个功能相当于 Memcached。
2. 支持持久化存储,这个功能相当于 MemcacheDB。
3. 数据类型更丰富。比其他 Key-Value 库功能更强。
4. 支持主从集群,分布式。
  • 应用:缓存从存取 Memcached 更改存取 Redis。

3、MongoDB  (Document-Web)

  • MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,类似 Json 的 Bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。

  • MongoDB 服务端可运行在 Linux、Windows 或 OS X 平台,支持32位和64位应用,默认端口为 27017。推荐运行在64位平台。

  • MongoDB 把数据存储在文件中(默认路径为:/data/db)。

Mysql5.7

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

RDBMS即关系数据库管理系统(Relational Database Management System)

1、MySQL  类型

#### 1、MySQL Community Server
​
- MySQL Community Server是社区版本,开源免费,但不提供官方技术支持。MySQL Community Server也是我们通常用的MySQL的版本。根据不同的操作系统平台细分为多个版本。
​
#### 2、MySQL Enterprise Edition
​
- MySQL Enterprise Edition企业版本,需付费,可以试用30天。
​
#### 3、MySQL Cluster
​
- MySQL Cluster集群版,开源免费。可将几个MySQL Server封装成一个Server。MySQL Cluster CGE 高级集群版,需付费。

2、MySQL 安装方式

1、yum 安装
优点:操作简单易用。不用单独下载,服务器可以联网且yum源没有问题即可(可以选择国内的163/阿里源)
2、编译安装
- 5.1.X 及之前的版本是通过下载tar包以后解压后进入软件包解压路径。然后./configure、make、make install
​
- 5.4.X 到 5.7.X 通过下载tar包以后解压后进入软件包解压路径。然后 cmake、make、make install(cmake需要提前安装)
​
优点:可以定制功能特性。
3、二进制安装
官方下载二进制包,解压初始化即可直接使用不用安装
4、rpm 安装
- 需要提前下载 rpm 软件包上传到服务器系统本地
- 使用 rpm 或者 yum 命令直接安装

3、MySQL 版本号

以 MySQL 5.7.26 这个版本的版本号为例说明每个数字含义。

- 第一个数字(5)主版本号:文件格式改动时,将作为新的版本发布;
- 第二个数字(7)发行版本号:新增特性或者改动不兼容时,发行版本号需要更改;
- 第三个数字(26)发行序列号:主要是小的改动,如bug的修复、函数添加或更改、配置参数的更改等。
关系型数据库与非关系型数据库的区别:
1.关系型数据库:
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
=============================================================================
2.非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:
1、不提供sql支持;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。

MySQL的官方网址: MySQL ,MySQL的社区版本下载地址为:

什么是sql

SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。

SQL包含三个部分:

数据定义语言包含定义数据库及其对象的语句,例如表,视图,触发器,存储过程等。
数据操作语言包含允许您更新和查询数据的语句。
数据控制语言允许授予用户权限访问数据库中特定数据的权限。

4、mysql安装

关闭防火墙和selinux

本次测试安装前保证测试机没有安装过msyql

[root@localhost ~]# rpm -qa | grep mariadb  #执行此查询操作,如有查询结果将结果删除(mysql在c7中叫做mariadb)
1、yum安装
[root@mysql-server ~]# yum intall -y mysql mysql-server #执行该命令直接安装mysql
总结
优点:过程简单直接
缺点:本质是使用前辈已经打包好的rpm包安装,配置信息无法自定义更改
2、rpm安装
  1. 进入网站 MySQL

    向下滚动

  2. 下载压缩包并解压

  3. 依次对解压后包中的rpm进行rpm安装

    解压后会有很多rpm,我们需要手动按顺序安装如下服务
    MySQL-client
    MySQL-devel
    MySQL-server
    MySQL-shared
    
    其余rpm会自动级联安装

总结
优点:同yum,本质上yum就是rpm,相较来说rpm可以自选版本
缺点:同yum
3、二进制安装

  1. 清理安装环境:

    # yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
    # userdel -r mysql
    # rm -rf /etc/my*
    # rm -rf /var/lib/mysql
  2. 下载二进制文件

  3. 创建用户,用于稍后的文件属组,防止发生权限问题

    [root@mysql-server ~]# useradd -r mysql -M -s /sbin/nologin
  4. 创建mysql目录

    [root@mysql-server ~]# mkdir -p /opt/yt/{data,mysql,log}
    #创建目录位置可自定义
  5. 解压 压缩文件

    [root@localhost opt]# tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
    #理论上可以将该文件解压到任意位置,但在上一步我们已经创建了指定的文件位置,所以将解压后的文件内容移动到/opt/liuyh/mysql中
    [root@localhost opt]# mv mysql-5.7.26-linux-glibc2.12-x86_64/* /opt/yt/mysql
  6. 创建系统指定命令软连接,保证linux可以准确找到mysql

    [root@localhost opt]# ln -s /opt/yt/mysql/bin/mysql /usr/bin
  7. 将上述所创建文件夹用户改为mysql

    [root@localhost mysql]# chown -R mysql:mysql /opt/yt/{mysql,data,log}
  8. 配置参数

    #创建并配置/etc/my.cnf
    [root@localhost etc]# vi /etc/my.cnf
    #内容为
    [mysqld]
    bind-address=0.0.0.0 # 任意地址都可以访问
    port=3306 # 端口号
    user=mysql 
    basedir=/opt/yt/mysql #设置安装目录
    datadir=/opt/yt/data/mysql #设置数据存放目录
    socket=/tmp/mysql.sock 
    log-error=/opt/yt/log/mysql.err
    pid-file=/opt/yt/log/mysql.pid
    #character config
    character_set_server=utf8mb4
    symbolic-links=0
    plugin-load=validate_password.so
    validate-password=ON  #开启密码复杂度校验
    
    [mysqld]
    bind-address=0.0.0.0
    port=3306
    user=mysql 
    basedir=/opt/yt/mysql
    datadir=/opt/yt/data/mysql
    socket=/tmp/mysql.sock 
    log-error=/opt/yt/log/mysql.err
    pid-file=/opt/yt/log/mysql.pid
    #character config
    character_set_server=utf8mb4
    symbolic-links=0
    plugin-load=validate_password.so
    validate-password=OFF
  9. 初始化mysql

    #进入mysql的bin目录
    [root@localhost bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/opt/yt/mysql/ --datadir=/opt/yt/data/mysql/ --user=mysql --initialize
  10. 查看临时密码

    #临时密码被保存在data/mysql中的mysql.err文件中
    [root@localhost bin]# cat /opt/yt/log/mysql.err 
    2023-11-12T10:17:27.211163Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2023-11-12T10:17:27.414458Z 0 [Warning] InnoDB: New log files created, LSN=45790
    2023-11-12T10:17:27.453012Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
    2023-11-12T10:17:27.523849Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: ae308415-8144-11ee-a08a-000c2936dde3.
    2023-11-12T10:17:27.524201Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
    2023-11-12T10:17:27.524567Z 1 [Note] A temporary password is generated for 
    root@localhost: Jsdrf(&Gr4zR    # 冒号后面是密码,注意包括一个空格

  11. 启动mysql

    #启动时可能会出现权限问题导致启动失败,所以先开发一些权限,如下
    [root@localhost bin]# cp /opt/yt/mysql/support-files/mysql.server /etc/init.d/mysqld 
    [root@localhost bin]# chmod 644 /etc/my.cnf (权限太高会启动报错)
    [root@localhost bin]# chmod +x /etc/init.d/mysqld 
    
    cp /opt/yt/mysql/support-files/mysql.server /etc/init.d/mysqld && chmod 644 /etc/my.cnf && chmod +x /etc/init.d/mysqld 
    #启动mysql
    [root@localhost bin]# service mysqld start
    Starting MySQL. SUCCESS! #启动成功,可以查询进程确定
    
    #关闭mysql
    [root@localhost bin]# service mysqld stop
  12. 登录mysql

    [root@localhost bin]# mysql -u root -p
    Enter password: 
    #输入刚才获取的临时密码
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.7.26
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> 
    #此处登陆成功
  13. 修改密码

    #第一次登陆后必须先修改密码之后才能进行其他操作
    mysql> set password = password('lyh@123'); #注意:该命令后必须添加分号
    Query OK, 0 rows affected, 1 warning (0.00 sec) #出现此消息证明密码修改成功,可尝试使用新密码重新登录
  14. 开启远程链接

    #mysql默认只能本机登录,这不符合实际,需要修改
    mysql> use mysql; #命令1
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    
    
    
    
    
    mysql> update user set host='%' where user = 'root'; #命令2
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    #执行如上两条命令后开启mysql远程访问
    
    mysql> flush privileges;  #命令3
    Query OK, 0 rows affected (0.00 sec)
    
    #执行命令3立刻刷新mysql,保证命令1命令2执行,如此在保证本机linux防护墙开启状态下mysql可被外界访问
    #注意: 在mysql中每一条命令后都要加分号
  15. 关闭密码复杂度校验,工作时不要使用!!

    #修改/etc/my.cnf
    validate-password=OFF #关闭密码复杂度校验
    #重启mysql,可将密码修改为简答密码

  16. 设置mysql开机自启

    [root@localhost ~]# chkconfig --add mysqld  #命令1,将mysql添加到开机自启项
    [root@localhost ~]# chkconfig --list        #命令2,查看
    
    注:该输出结果只显示 SysV 服务,并不包含
    原生 systemd 服务。SysV 配置数据
    可能被原生 systemd 配置覆盖。 
    
          要列出 systemd 服务,请执行 'systemctl list-unit-files'。
          查看在具体 target 启用的服务请执行
          'systemctl list-dependencies [target]'。
    
    mysqld         	0:关	1:关	2:开	3:开	4:开	5:开	6:关  #此处3,4,5为开则设置成功
    netconsole     	0:关	1:关	2:关	3:关	4:关	5:关	6:关
    network        	0:关	1:关	2:开	3:开	4:开	5:开	6:关
总结
优点:自由度高,可定制性强
缺点:步骤繁琐
4、源码编译安装

注意:使用该方法安装,虚拟机分配的磁盘空间要大于20G

1、清理安装环境:

# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
# userdel -r mysql
# rm -rf /etc/my*
# rm -rf /var/lib/mysql

2、创建mysql用户

[root@mysql-server ~]# useradd -r mysql -M -s /sbin/nologin

3、从官网下载tar包

4、安装编译工具

# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
cmake:
# yum -y install cmake

5、创建mysql目录

[root@mysql-server ~]# mkdir -p /opt/yt/{data,mysql,log}
#创建目录位置可自定义

useradd -r mysql -M -s /sbin/nologin && yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake &&  mkdir -p /opt/yt/{data,mysql,log} 

6、解压

[root@mysql-server ~]# tar xzvf mysql-5.7.26.tar.gz
注:如果安装的MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的安装才可以正常运行。否则会报CMake Error at cmake/boost.cmake:81错误
安装包里面自带boost包
Boost库是为C++语言标准库提供扩展的一些C++程序库

7、编译安装

cd 解压的mysql目录
[root@mysql-server ~]# cd /opt/liuyh/mysql-5.7.26/
[root@mysql-server mysql-5.7.27]# mkdir -p boost/boost_1_59_0
进入到boost_1_59_0目录下,将Boost库包上传到该目录下。
[root@mysql-server mysql-5.7.27]# cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/opt/yt/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/opt/yt/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

提示:boost也可以使用如下指令自动下载,如果不下载bost压缩包,把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST=1/
参数详解:
-DCMAKE_INSTALL_PREFIX=/opt/liuyh/mysql \   安装目录
-DSYSCONFDIR=/etc \   配置文件存放 (默认可以不安装配置文件)
-DMYSQL_DATADIR=/opt/liuyh/data \   数据目录   错误日志文件也会在这个目录
-DINSTALL_MANDIR=/usr/share/man \     帮助文档 
-DMYSQL_TCP_PORT=3306 \     默认端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \  sock文件位置,用来做网络通信的,客户端连接服务器的时候用
-DDEFAULT_CHARSET=utf8 \    默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS=all \   扩展的字符集支持所有的
-DDEFAULT_COLLATION=utf8_general_ci \  支持的
-DWITH_READLINE=1 \    上下翻历史命令
-DWITH_SSL=system \    使用私钥和证书登陆(公钥)  可以加密。 适用与长连接。坏处:速度慢
-DWITH_EMBEDDED_SERVER=1 \   嵌入式数据库
-DENABLED_LOCAL_INFILE=1 \    从本地倒入数据,不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE=1  默认的存储引擎,支持外键
[root@mysql-server mysql-5.7.27]# make && make install
如果安装出错,想重新安装:
    不用重新解压,只需要删除安装目录中的缓存文件CMakeCache.txt
到此,经过cmake命令我们会在cmake命令中-DCMAKE_INSTALL_PREFIX所指定的位置获取的一个mysql的二进制文件,接下来的操作同二进制文件操作一致
总结
优点:同二级制安装
缺点:相较于二级制安装,源码文件小巧便于携带,传输,但是安装会耗费较多时长
企业中为了稳妥以及定制化,一般使用二进制安装或源码安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值