第1章 数据库介绍及mysql安装

1.1 数据库简介

  数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。

  所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

1.1.1 什么是数据

  数据是指对客观事件进行记录并可以鉴别的符号,是对客观 事物的性质、状态以及相互关系等进行记载的物理符号或这些物 理符号的组合。它是可识别的、抽象的符号。

1.1.2 数据库管理系统

  NoSQL:非关系型数据库(Not only SQL)

  关系型数据库的特点

1.1.3 NoSQL特性总览

  l  不是否定关系型数据库,而是作为补充,现在也有部分替代的趋势。

  l  关注高性能,高并发,灵活性,忽略和上述无关的功能。

  l  现在也在提升安全性和使用功能。

  l  典型产品:Redis(持久化缓存,两个半天)、MongoDB(最接近关系型数据 的NoSQL)、Memcached。

  l  管理不适用SQL管理,而是用一些特殊的 API 或 数据接口。

1.1.4 NoSQL的分类、特点、典型产品

  键值(KV)存储:Memcached、Redis

  列存储(column-oriented):HBASE(新浪,360)、Cassandra(200台服务器集群 )

  文档数据库(document-oriented):MongoDB(最接近关系型数据库的NoSQL)

  图形存储(Graph):Neo4j

    数据来源: https://db-engines.com/en/ranking

1.2 数据库相关产品

1.2.1 Oracle公司产品介绍

**  Oracle****数据库版本介绍**

**  Oracle****的市场应用**

    a)  市场份额第一,趋势递减

    b)  市场空间,传统企业

    c)  传统企业也在互联网化

**  MySQL**数据库版本介绍

**  MySQL****的市场应用**

    a)  中、大型互联网公司

    b)  市场空间:互联网领域第一

    c)  趋势明显

    d)  同源产品:MariaDB、perconaDB

1.2.2 其他公司产品

**  微软:SQL Server**

**  IBM** :DB2****数据库

下面三者广泛应用在大型互联网公司

1.3 Mysql简介

1.3.1 mysql数据库发展史

1.3.2 MySQL的特点简介

  开源、社区版免费、简单,使用方便,可靠、稳定、安全、社区活跃

1.3.3 mysql产品线的介绍

mysql****产品线(主线)

_  3.26–5.2_****版本

    – 正宗后代

    – Centos5、6中默认有5.1版本

    – Centos7中默认是MariaDB

**  5.4–5.7** ,8.0****版本

    – 借鉴社区好的贡献,进一步开发的版本

    – 主流版本:5.5 5.6 5.7

_  MySQL Cluster 6.0_ 版本&****更高

    – 类似于Oracle RAC,硬件要求高。

    – 一般各大网站没有人用

**         mysql****产品线(**派生产品)

                  派生版本有Drizzle、MariaDB、Percona Server及OurDelta等。

1.3.4 企业生产场景选择MySQL数据库建议:

1.4 mysql数据库的安装

1.4.1 系统环境说明

1.4.2 mysql编译安装

  安装依赖包

**  cmake**

  定制功能:存储引擎、字符集、压缩等

  定制安装位置、数据存储位置、文件位置(socket)

         注:这里使用的是sohu的镜像源进行下载(软件版本5.6.36)

进入查询目录,使用cmake进行编译,安装,创建软连接,过程时间较长。

1.4.3 数据库安装后的操作

**  复制配置文件**

  编译的MySQL可以暂时不需要设置配置文件。

  注意:如果以前操作系统中安装过rpm格式的mysql,系统中可能会遗留/etc/my.cnf文件,我们需要将它删除掉

初始化数据库

**  添加环境变量,使用mysql****命令**

1.4.4 数据库安全设置

  设置root用户密码

  优化数据库(清理用户及无用数据库)

1.5 mysql 5.7版本安装说明

  主机系统环境说明

         初始化时注意最后一行输出root****密码

  拷贝配置文件和启动文件

# 修改启动文件内容(配置目录)

  启动mysql

  添加环境变量

修改mysql密码

第2章 Mysql体系结构与基本管理

2.1 客户端与服务器端模型

2.1.1 mysql服务结构

mysql是一个典型的c/s模式,服务端与客户端两部分组成

2.1.2 mysql连接方式

TCP/IP 连接   网络连接串(通过用户名 密码 IP 端口进行连接)

socket 连接   网络套接字(用户名 密码  socket文件)

在linux中使用mysql命令不加其他的参数连接方式即

2.1.3 MySQL在启动过程

  启动后台守护进程,并生成工作线程

  预分配内存结构供MySQL处理数据使用

**  实例就是MySQL**的后台进程+线程+预分配的内存结构

2.2 Mysqld服务的构成

2.2.1 连接层

  通讯协议为:tcp/ip 或 socket

  连接线程 为连接的数量

  用户验证 为通过用户名 密码验证进行通讯协议

2.2.2 SQL层

  sql即结构化的查询语句(数据库内部逻辑语言)sql92 sql99

SQL层的功能: select * from wordpress.user;

8、最终将取出的数据抽象成管理员或用户能看懂的方式(表),展现在用户面前

9、查询缓存: 缓存之前查询的数据。 假如我们查询的表是一个经常有变动的表,查询缓存不要设置太大  

**  SQL****层处理流程**

2.2.3 存储引擎层

  由上层决定存储方式

    存储引擎是充当不同表类型的处理程序的服务器组件。

**  存储引擎层功能:**

    存数据、取数据

    数据的不同存储方式

     不同的管理方式:

            事务(增、删、改)

            备份恢复       

            高级功能(高可用的架构、读写分离架构)

2.2.4 依赖于存储引擎的功能

存储引擎是充当不同表类型的处理程序的服务器组件。

存储引擎用于:

  特殊功能:

  双层处理

  SQL 层不依赖于存储引擎:

2.2.5 mysql 的逻辑构成(数据库内部结构)

  逻辑构成是为了用户能够读懂数据出现的,让你更好的理解数据。

  管理数据的一种方式。

  切换库

  查看表

  查看列的信息(记录)

2.2.6 mysql的存储方式

         程序文件随数据目录一起存储在服务器安装目录下。执行各种客户机程序、管理程序和实用程序时将创建程序可执行文件和日志文件。首要使用磁盘空间的是数据目录。

服务器日志文件和状态文件:

  包含有关服务器处理的语句的信息。日志可用于进行故障排除、监视、复制和恢复。

**  InnoDB ****日志文件:** (适用于所有数据库)驻留在数据目录级别。

**  InnoDB **系统表空间:  包含数据字典、撤消日志和缓冲区。

         每个数据库在数据目录下均具有单一目录(无论在数据库中创建何种类型的表)。数据库目录存储以下内容:

  数据目录的位置取决于配置、操作系统、安装包和分发。典型位置是 /var/lib/mysql。

  MySQL 在磁盘上存储系统数据库 (mysql)。

  mysql 包含诸如用户、特权、插件、帮助列表、事件、时区实现和存储例程之类的信息。

2.2.7 MySQL体系结构小结

sql 优化相关的理念

           解析器 : 执行计划  数据库执行sql的一种方式 

           优化器 : 知道基本规则,直接影响将来选择哪个执行计划

           查询缓存 : 生产环境中,一般会用redis memcached 来代替

逻辑结构

 _ _库    就是一个目录,为了存放多张表

 _ _表    在相应的库中,用多个文件来表示

                    myisam表 3个文件:(.myd数据文件  .myi索引文件 frm表 结构定义文件)

                    innodb:  2个或者一个,共享表空间(ibdata1 基表 元数据)、独立表空间(5.6以后默认的表存储方式)

如何使用磁盘

         1、多个库多个目录,目录下存放了多个表的存储文件

         2、  auto.cnf           db02.err           db02.pid           ibdata1             ib_logfile0       ib_logfile1                等

2.3 MySQL管理

2.3.1 连接管理:mysql

常用的连接方式:

2.3.2 数据库的启动流程

  mysqld 文件属性

mysql.server文件属性

mysqld_safe文件属性

2.3.3 mysql的关闭方法

  推荐使用的方法:

    mysqladmin命令关闭mysql

         perror命令是mysql自带命令,能够查询mysql错误代码的含义。

2.3.4 my.cnf 配置文件说明

功能

    1、影响到服务器进程的启动

    2、影响到客户端程序

配置my.cnf

                  使用不同的"标签"去明确指定影响哪部分功能

                  服务器端

检查进程信息,可以看到与my.cnf配置的相同

my.cnf文件的配置

2.3.5 配置文件的读取过程

  如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 –defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。

2.4 mysql多实例配置

2.4.1 什么是MySQL多实例?

  简单地说,MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306/3307)同时运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。

  这些MySQL多实例共用一套MySQL安装程序,使用不同的my.cnf(也可以相同)配置文件、启动程序(也可以相同)和数据文件。在提供服务时,多实例MySQL在逻辑上看来是各自独立的,他们根据配置文件对应设定值,获得服务器响应数量的资源。

2.4.2 MySQL多实例的作用与问题

有效利用服务器资源

  当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务,且可以实现资源的逻辑隔离

节约服务器资源

  当公司资金紧张,但是数据库又需要各自尽量独立地提供服务,而且,需要主从复制等技术时,多实例就再好不过了

  MySQL多实例有它的好处,但也有弊端,比如,会存在资源互相抢占的问题。当某个数据库实例并发很高或者有SQL慢查询时,整个实例会消耗大量的系统CPU、磁盘I/O等资源,导致服务器上的其他数据库实例提供服务的质量一起下降。

2.4.3 多实例配置思路

2.4.4 多实例配置过程

      前期mysql的安装与1.4MySQL的安装一致,在这里就不再重复(配置完成不要启动)

第一个里程碑:多实例配置文件准备

3306端口my.cnf配置文件

[mysqld] user = mysql port = 3306 socket = /data/3306/mysql.sock basedir = /application/mysql datadir = /data/3306/data log-bin = /data/3306/mysql-bin server-id = 6

[mysqld_safe] log-error=/data/3306/mysql_3306.err pid-file=/data/3306/mysqld.pid

3307端口my.cnf配置文件

[mysqld] user = mysql port = 3307 socket = /data/3307/mysql.sock basedir = /application/mysql datadir = /data/3307/data log-bin = /data/3307/mysql-bin server-id = 7

[mysqld_safe] log-error=/data/3307/mysql_3307.err pid-file=/data/3307/mysqld.pid

编写管理脚本3306

<div id="cnblogs_code_open_40256223-4c27-4ef9-adab-eda304eb594f" class="cnblogs_code_hide">
  <pre><span style="color: #008080;"> 1</span> [root@db02 /]# <span style="color: #0000ff;">cat</span> data/<span style="color: #800080;">3306</span>/<span style="color: #000000;">mysql 

2 #!/bin/sh 3 #3306 start scripts 4 #init 5 port=3306 6 mysql_user="root" 7 CmdPath="/application/mysql/bin" 8 mysql_sock="/data/${port}/mysql.sock" 9 mysqld_pid_file_path=/data/3306/3306.pid 10 start(){ 11 if [ ! -e "$mysql_sock" ];then 12 printf "Starting MySQL…\n" 13 /bin/sh ${CmdPath}/mysqld_safe –defaults-file=/data/${port}/my.cnf –pid-file=$mysqld_pid_file_path 2>&1 > /dev/null & 14 sleep 3 15 else 16 printf "MySQL is running…\n" 17 exit 1 18 fi 19 } 20 stop(){ 21 if [ ! -e "$mysql_sock" ];then 22 printf "MySQL is stopped…\n" 23 exit 1 24 else 25 printf "Stoping MySQL…\n" 26 mysqld_pid=<span style="color: #0000ff;">cat</span> <span style="color: #800000;">"</span><span style="color: #800000;">$mysqld_pid_file_path</span><span style="color: #800000;">"</span><span style="color: #000000;"> 27 if (kill - $mysqld_pid 2>/dev/null) 28 then 29 kill $mysqld_pid 30 sleep 2 31 fi 32 fi 33 } 34 35 restart(){ 36 printf "Restarting MySQL…\n" 37 stop 38 sleep 2 39 start 40 } 41 42 case "$1" in 43 start) 44 start 45 ;; 46 stop) 47 stop 48 ;; 49 restart) 50 restart 51 ;; 52 *) 53 printf "Usage: /data/${port}/mysql {start|stop|restart}\n" 54 esac

<p>
  <span class="cnblogs_code_collapse">View Code mysql 多实例 启动脚本</span></div> </div> 
  
  <p>
    编写管理脚本3307
  </p>
  
  <div>
    <div class="cnblogs_code" onclick="cnblogs_code_show('3bf8e017-7e17-482e-9a18-8ed441f03791')">
      <img id="code_img_closed_3bf8e017-7e17-482e-9a18-8ed441f03791" class="code_img_closed" src="https://clsn.io/wp-content/uploads/2018/03/ContractedBlock-8.gif" alt="数据库介绍(MySQL安装 体系结构、基本管理)" alt="" /><img id="code_img_opened_3bf8e017-7e17-482e-9a18-8ed441f03791" class="code_img_opened" style="display: none;" onclick="cnblogs_code_hide('3bf8e017-7e17-482e-9a18-8ed441f03791',event)" data-original="https://clsn.io/wp-content/uploads/2018/03/ExpandedBlockStart-8.gif" src="/wp-content/themes/clsn-003/img/blank.gif" alt="数据库介绍(MySQL安装 体系结构、基本管理)" alt="" /></p> 
      
      <div id="cnblogs_code_open_3bf8e017-7e17-482e-9a18-8ed441f03791" class="cnblogs_code_hide">
        <pre><span style="color: #008080;"> 1</span> [root@db02 /]# <span style="color: #0000ff;">cat</span> data/<span style="color: #800080;">3307</span>/<span style="color: #000000;">mysql 

2 #!/bin/sh 3 #3307 start scripts 4 #init 5 port=3307 6 mysql_user="root" 7 CmdPath="/application/mysql/bin" 8 mysql_sock="/data/${port}/mysql.sock" 9 mysqld_pid_file_path=/data/3307/3307.pid 10 start(){ 11 if [ ! -e "$mysql_sock" ];then 12 printf "Starting MySQL…\n" 13 /bin/sh ${CmdPath}/mysqld_safe –defaults-file=/data/${port}/my.cnf –pid-file=$mysqld_pid_file_path 2>&1 > /dev/null & 14 sleep 3 15 else 16 printf "MySQL is running…\n" 17 exit 1 18 fi 19 } 20 stop(){ 21 if [ ! -e "$mysql_sock" ];then 22 printf "MySQL is stopped…\n" 23 exit 1 24 else 25 printf "Stoping MySQL…\n" 26 mysqld_pid=<span style="color: #0000ff;">cat</span> <span style="color: #800000;">"</span><span style="color: #800000;">$mysqld_pid_file_path</span><span style="color: #800000;">"</span><span style="color: #000000;"> 27 if (kill - $mysqld_pid 2>/dev/null) 28 then 29 kill $mysqld_pid 30 sleep 2 31 fi 32 fi 33 } 34 35 restart(){ 36 printf "Restarting MySQL…\n" 37 stop 38 sleep 2 39 start 40 } 41 42 case "$1" in 43 start) 44 start 45 ;; 46 stop) 47 stop 48 ;; 49 restart) 50 restart 51 ;; 52 *) 53 printf "Usage: /data/${port}/mysql {start|stop|restart}\n" 54 esac

      <p>
        <span class="cnblogs_code_collapse">View Code mysql 多实例 启动脚本</span></div> 
        
        <p class="ad">
            <span style="color: #ff0000;">注意脚本要给继续权限才能够正常使用</span>
        </p></div> 
        
        <p>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第二个里程碑:创建数据目录并授权
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>[root@db02 /]# <span style="color: #0000ff;">mkdir</span> /data/{<span style="color: #800080;">3306</span>,<span style="color: #800080;">3307</span>}/data -<span style="color: #000000;">p

[root@db02 /]# chown -R mysql.mysql /data/

        <p>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第三个里程碑:初始化数据
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>cd /application/mysql/scripts  &&<span style="color: #000000;"> \

./mysql_install_db –defaults-file=/data/3306/my.cnf –basedir=/application/mysql –datadir=/data/3306/data –user=mysql ./mysql_install_db –defaults-file=/data/3307/my.cnf –basedir=/application/mysql –datadir=/data/3307/data –user=mysql

        <p>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第四个里程碑:创建日志文件
        </p>
        
        <div>
          <p class="ad">
                #5.6.36特殊性:需要创建错误日志文件
          </p>
          
          <div class="cnblogs_code">
            <pre><span style="color: #0000ff;">touch</span> /data/<span style="color: #800080;">3306</span>/<span style="color: #000000;">mysql_3306.err

touch /data/3307/mysql_3307.err

        <p>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第五个里程碑:启动多实例
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>[root@db02 scripts]# /data/<span style="color: #800080;">3306</span>/<span style="color: #000000;">mysql start

Starting MySQL… [root@db02 scripts]# /data/3307/mysql start Starting MySQL…

        <p>
          检查mysql状态
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>[root@db02 scripts]# <span style="color: #0000ff;">ps</span> -ef |<span style="color: #0000ff;">grep</span><span style="color: #000000;"> [my]sql 

root 4341 1 16:46 pts/1 00:00:00 /bin/sh /application/mysql/bin/mysqld_safe –defaults-file=/data/3306/my.cnf –pid-file=/data/3306/3306.pid mysql 4526 4341 13 16:46 pts/1 00:00:03 /application/mysql/bin/mysqld –defaults-file=/data/3306/my.cnf –basedir=/application/mysql –datadir=/data/3306/data –plugin-dir=/application/mysql/lib/plugin –user=mysql –log-error=/data/3306/mysql_3306.err –pid-file=/data/3306/3306.pid –socket=/data/3306/mysql.sock –port=3306 root 4549 1 16:46 pts/1 00:00:00 /bin/sh /application/mysql/bin/mysqld_safe –defaults-file=/data/3307/my.cnf –pid-file=/data/3307/3307.pid mysql 4734 4549 51 16:46 pts/1 00:00:08 /application/mysql/bin/mysqld –defaults-file=/data/3307/my.cnf –basedir=/application/mysql –datadir=/data/3307/data –plugin-dir=/application/mysql/lib/plugin –user=mysql –log-error=/data/3307/mysql_3307.err –pid-file=/data/3307/3307.pid –socket=/data/3307/mysql.sock –port=3307

        <p>
          检查端口信息
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>[root@db02 scripts]# netstat  -lntup |<span style="color: #0000ff;">grep</span><span style="color: #000000;"> mysql 

tcp :::3306 :::* LISTEN 4526/mysqld
tcp :::3307 :::* LISTEN 4734/mysqld

          <p>
            <span style="background-color: #00ff00;">  至此mysql的多实例就配置完成&nbsp; &nbsp;&nbsp;</span>
          </p>
        </div>
        
        <h3>
          <span id="245_mysql">2.4.5 多实例mysql的使用</span>
        </h3>
        
        <p>
          本地连接方式
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>mysql -S /data/<span style="color: #800080;">3306</span>/<span style="color: #000000;">mysql.sock

mysql -S /data/3307/mysql.sock

        <h3>
          <span id="246_mysql">2.4.6 关于mysql多实例的选择</span>
        </h3>
        
        <div class="cnblogs_code">
          <pre><span style="color: #800080;">1</span><span style="color: #000000;">、资金紧张性公司的选择 

  资金紧张,公司业务访问量又不大,但又希望不同的业务的数据库服务各自尽量独立 2、并发访问不是特别大的业务   当公司业务访问量不太大的时候,服务器的资源基本都是浪费的,这就适合多实例的使用 3、门户网站应用MySQL多实例场景   配置硬件好的服务器,可以节省IDC机柜空间,跑多实例也不会减少硬件资源不慢的浪费   一般是从库多实例,例如:某部门使用IBM服务器为48核CPU,内存96GB、一台服务器跑3~4个实例:此外,sina网也是用的多实例,内存48GB左右。企业环境中一般将多实例应用在测试环境。

        <h2>
          <span id="25_mysql">2.5 mysql忘记密码怎么办?</span>
        </h2>
        
        <p>
            第一步:将服务停掉
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>/etc/init.d/mysqld stop</pre>
          </div>
          
          <p>
              第二步:加参数启动服务
          </p>
        </div>
        
        <div>
          <div class="cnblogs_code">
            <pre>cd /application/mysql/bin/<span style="color: #000000;"> 

mysqld_safe –skip-grant-table –user=mysql –skip-networking &

        <p>
            <span style="background-color: #ffff00;">这种模式下</span><br />     无密码登陆<br />     网络用户无法登陆<br />     只能本地登陆<br />     和授权有关的命令都无法执行
        </p>
        
        <p>
            第三步:修改密码
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>[root@db02 <span style="color: #800080;">3306</span><span style="color: #000000;">]# mysql

mysql> update mysql.user set password=password(123) where user=root and host=localhost; mysql> flush privileges;

        <p>
             <span style="background-color: #ccffff;"> MYSQL5.7 修改密码修改字段&nbsp; authentication_string</span>
        </p>
        
        <p>
            第四步:退出重启服务
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>/etc/init.d/mysqld restart</pre>
          </div>
        </div>
        
        <p>
            第五步:登录验证
        </p>
        
        <div>
          <div class="cnblogs_code">
            <pre>mysql -uroot -p123</pre>
          </div>
        </div>
        
        <p>
            至此密码修改成功
        </p>
        
        <h2>
          <span id="26">2.6 参考文献</span>
        </h2>
        
        <div>
          <div class="cnblogs_code">
            <pre>https:<span style="color: #008000;">//</span><span style="color: #008000;">zh.wikipedia.org/wiki/MySQL#%E6%AD%B7%E5%8F%B2  mysql历史</span>

http://blog.51cto.com/oldboy/1728380 MySQL常见错误代码(error code)及代码说明 https://www.abcdocker.com/abcdocker/28 MySQL入门介绍 https://www.abcdocker.com/abcdocker/90 MySQL多实例 http://oldboy.blog.51cto.com 脚本来源

          <p>
            &nbsp;
          </p>
        </div>
        
        <p>
          &nbsp;
        </p>
        
        <div id="toc_container" class="toc_white have_bullets">
          <ul class="toc_list">
            <ul>
              <li>
                <a href="#11">1.1 数据库简介</a><ul>
                  <li>
                    <a href="#111">1.1.1 什么是数据</a>
                  </li>
                  <li>
                    <a href="#112">1.1.2 数据库管理系统</a>
                  </li>
                  <li>
                    <a href="#113_NoSQL">1.1.3 NoSQL特性总览</a>
                  </li>
                  <li>
                    <a href="#114_NoSQL">1.1.4 NoSQL的分类、特点、典型产品</a>
                  </li>
                </ul>
              </li>
              
              <li>
                <a href="#12">1.2 数据库相关产品</a><ul>
                  <li>
                    <a href="#121_Oracle">1.2.1 Oracle公司产品介绍</a>
                  </li>
                  <li>
                    <a href="#122">1.2.2 其他公司产品</a>
                  </li>
                </ul>
              </li>
              
              <li>
                <a href="#13_Mysql">1.3 Mysql简介</a><ul>
                  <li>
                    <a href="#131_mysql">1.3.1 mysql数据库发展史</a>
                  </li>
                  <li>
                    <a href="#132_MySQL">1.3.2 MySQL的特点简介</a>
                  </li>
                  <li>
                    <a href="#133_mysql">1.3.3 mysql产品线的介绍</a>
                  </li>
                  <li>
                    <a href="#134_MySQL">1.3.4 企业生产场景选择MySQL数据库建议:</a>
                  </li>
                </ul>
              </li>
              
              <li>
                <a href="#14_mysql">1.4 mysql数据库的安装</a><ul>
                  <li>
                    <a href="#141">1.4.1 系统环境说明</a>
                  </li>
                  <li>
                    <a href="#142_mysql">1.4.2 mysql编译安装</a>
                  </li>
                  <li>
                    <a href="#143">1.4.3 数据库安装后的操作</a>
                  </li>
                  <li>
                    <a href="#144">1.4.4 数据库安全设置</a>
                  </li>
                </ul>
              </li>
              
              <li>
                <a href="#15_mysql_57">1.5 mysql 5.7版本安装说明</a>
              </li>
            </ul></li>
            
            <li>
              <a href="#2_Mysql">第2章 Mysql体系结构与基本管理</a><ul>
                <li>
                  <a href="#21">2.1 客户端与服务器端模型</a><ul>
                    <li>
                      <a href="#211_mysql">2.1.1 mysql服务结构</a>
                    </li>
                    <li>
                      <a href="#212_mysql">2.1.2 mysql连接方式</a>
                    </li>
                    <li>
                      <a href="#213_MySQL">2.1.3 MySQL在启动过程</a>
                    </li>
                  </ul>
                </li>
                
                <li>
                  <a href="#22_Mysqld">2.2 Mysqld服务的构成</a><ul>
                    <li>
                      <a href="#221">2.2.1 连接层</a>
                    </li>
                    <li>
                      <a href="#222_SQL">2.2.2 SQL层</a>
                    </li>
                    <li>
                      <a href="#223">2.2.3 存储引擎层</a>
                    </li>
                    <li>
                      <a href="#224">2.2.4 依赖于存储引擎的功能</a>
                    </li>
                    <li>
                      <a href="#225_mysql">2.2.5 mysql 的逻辑构成(数据库内部结构)</a>
                    </li>
                    <li>
                      <a href="#226_mysql">2.2.6 mysql的存储方式</a>
                    </li>
                    <li>
                      <a href="#227_MySQL">2.2.7 MySQL体系结构小结</a>
                    </li>
                  </ul>
                </li>
                
                <li>
                  <a href="#23_MySQL">2.3 MySQL管理</a><ul>
                    <li>
                      <a href="#231_mysql">2.3.1 连接管理:mysql</a>
                    </li>
                    <li>
                      <a href="#232">2.3.2 数据库的启动流程</a>
                    </li>
                    <li>
                      <a href="#233_mysql">2.3.3 mysql的关闭方法</a>
                    </li>
                    <li>
                      <a href="#234_mycnf">2.3.4 my.cnf 配置文件说明</a>
                    </li>
                    <li>
                      <a href="#235">2.3.5 配置文件的读取过程</a>
                    </li>
                  </ul>
                </li>
                
                <li>
                  <a href="#24_mysql">2.4 mysql多实例配置</a><ul>
                    <li>
                      <a href="#241_MySQL">2.4.1 什么是MySQL多实例?</a>
                    </li>
                    <li>
                      <a href="#242_MySQL">2.4.2 MySQL多实例的作用与问题</a>
                    </li>
                    <li>
                      <a href="#243">2.4.3 多实例配置思路</a>
                    </li>
                    <li>
                      <a href="#244">2.4.4 多实例配置过程</a>
                    </li>
                    <li>
                      <a href="#245_mysql">2.4.5 多实例mysql的使用</a>
                    </li>
                    <li>
                      <a href="#246_mysql">2.4.6 关于mysql多实例的选择</a>
                    </li>
                  </ul>
                </li>
                
                <li>
                  <a href="#25_mysql">2.5 mysql忘记密码怎么办?</a>
                </li>
                <li>
                  <a href="#26">2.6 参考文献</a>
                </li>
              </ul>
            </li>
          </ul>
        </div>