时间:2018-06-01
姓名:魏文应
说明:这一篇文章,大部分文字内容来源于 www.xuegod.cn 的视频教程。
一、数据库介绍
什么是数据库<Database>
简单说,存放数据的仓库,这个仓库按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的。我们可以通过数据库提供的多种方法来 管理数据库里的数据 。我们简单形象的理解,比如我们人类这个大社会,我们的身份证,户口簿等等,都和数据库有关。
数据库的产生和发展
数据库产生于60多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是 存储和管理数据,而转变成用户所需要的各种 数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的 表格,到能够进行海量数据存储的 大型数据库系统 ,都在各个方面得到了广泛的应用。
二、数据库的分类
数据库通常分为 层次式数据库、网络式数据库 和 关系式数据库 三种。而不同的数据库是按 不同的数据结构 来联系和组织的。而在当今的互联网中,最常见的 数据库模型 主要是两种,即 关系型数据库 和 非关系型数据库(NOSQL) 。
关系型数据库介绍
关系型数据库的由来: 虽然 网状数据库 和 层次数据库 已经很好的解决了数据的 集中和共享 问题,但是在数据库 独立性 和 抽象级别 上扔有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确 数据的存储结构,指出 存取路径。而关系型数据库就可以较好的解决这些问题。
关系型数据库介绍: 关系型数据库模型是把 复杂的数据结构 归结为 简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部 建立在一个或多个关系表格上,通过对这些关联的表格 分类、合并、连接或选取 等运算来实现数据库的管理。关系型数据库诞生40多年了,从理论产生发展到现实产品,例如:Oracle和MySQL,Oracle在数据库领域上升到霸主地位,形成每年高达数百亿美元的庞大产业市场。
关系型数据库表格之间的关系举例: 学生信息,图书信息。
非关系型数据库介绍
非关系型数据库诞生背景: NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是 超大规模和高并发的SNS类型的web2.0纯动态网站 已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的一个有效的补充。
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
非关系型数据库种类
-
键值存储数据库(key-value): 键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据库,因为使用key主键访问,所以会获得很高的性能及扩展性。键值数据库主要使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发。
典型产品:
Memcached、Redis、MemcacheDB
。 -
列存储(Column-oriented)数据库: 列存储数据库将数据存储在列族中,一个列族存储经常被一起查询的相关数据,比如人类,我们经常会查询某个人的姓名和年龄,而不是薪资。这种情况下姓名和年龄会被放到一个列族中,薪资会被放到另一个列族中。这种数据库通常用来应对分布式存储海量数据。
典型产品:
Cassandra、HBase
。 -
面向文档(Document-Oriented)数据库: 文档型数据库的灵感是来自于Lotus Notes办公软件,而且它同第一种键值数据库类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
面向文档数据库会将数据以文档形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名词与对应值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储。
典型产品:
MongoDB、CouchDB
-
图形数据库: 图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。
典型产品:
Neo4J、InforGrid
三、常用关系型数据库产品介绍
Oracle数据库
Oracle数据库系统,由美国ORACLE公司(甲骨文)研发设计。它有以下特点:
以分布式数据库 为核心的一组软件产品。
是目前 最流行 的客户/服务器(client/server,B/S体系结构)数据库之一,比如SilverStream就是基于数据库的一种中间件。
Oracle数据库是目前世界上使用 最为广泛 的数据库管理系统。
作为一个 通用的 数据库系统,它具有完整的数据管理功能。
作为一个 关系数据库,它是一个完备关系的产品。
作为 分布式数据库,它实现了分布式处理功能。
但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。
Oracle数据库最新版本为Oracle Database 12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。
MySQL数据库
MySQL(发音为"my ess cue el",不是"my sequel")是一种 开放源代码 的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在 General Public License的许可 下下载,,并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MariaDB数据库
MariaDB数据库管理系统是 MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司 收购了MySQL 后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字
SQL Server数据库
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2014年4月份推出的SQL SERVER 2014,可能在今明年之类推出2016正式版。
Access数据库
Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软OFFICE的一个成员, 在包括专业版和更高版本的office版本里面被单独出售。2012年12月4日,最新的微软Office Access 2013在微软Office 2013里发布,微软Office Access 2010 是前一个版本。
MS ACCESS以它自己的格式将数据存储在基于Access Jet的数据库引擎里。它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。
软件开发人员和数据架构师可以使用Microsoft Access开发应用软件,“高级用户”可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS支持Visual Basic宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其他的ActiveX组件。可视对象用于显示表和报表,他们的方法和属性是在VBA编程环境下,VBA代码模块可以声明和调用Windows操作系统函数。
PostgreSQL数据库
PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。
事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备
PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高
其他一些不常有的数据库
DB2
,Informix
,Sybase
等。
四、常用非关系型数据库产品介绍
Memcached(key-value)
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。
这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
Memcached 的守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
Memcached由Danga Interactive开发,其最新版本发布于2010年,作者为Anatoly Vorobey和Brad Fitzpatrick。用于提升LiveJournal . com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。
Redis(key-value)
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。[1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。从盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
MongoDB(Document-oriented)
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
Cassandra(Column-oriented)
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型)。Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。
其它非关系型数据库
HBase
、MemacheDB
、BerkeleyDB
、Tokyo Cabinet
。
五、MySQL介绍与安装
为什么选择MySQL
- mysql性能卓越,服务稳定,很少出现异常宕机。
- mysql开源免费,无版权制约,自主性及使用成本低。
- 产品耦合度,mysql支持多种操作系统,支持多开发语言,特别是php。
- 技术积累,庞大的活跃的社区。
- 软件体积小,安装简单,易于维护
MySQL数据库分类与版本升级
MySQL 官网:http://www.mysql.com/ 。
MySQL分为社区版和商业版。
有四个版本依次发布:Alpha版(测试)、Beta版(测试)、RC版(商业版)和GA版(社区版)。我们使用社区版。
社区版和企业版的区别
- 首先价格上,社区版完全免费,企业版需要高额的费用。
- 技术上,企业版具有MySQL企业级服务器、MySQL企业级系统监控工具。企业版经过严格的测试认证,相对企业版,社区版的开发测试环境没有那么严格。
- 服务方面,社区版mysql官方不提供任何技术支持,使用过程出现任何意外不负任何责任,企业版与之相反。
- 商业版不支持GPL协议。
MySQL产品路线:三条产品线
5.0.XX到5.1.XX产品系列: 这条产品线继续完善改进用户体验和性能,同时增加新功能,是mysql早期产品的延续,如rhel6自带的mysql 。
5.4.XX开始到5.7.XX产品系列: mysql社区和第三方公司percona整合的,吸收新的算法和存储引擎,现在已经到了5.6.26。
6.0.XX到7.X.XX产品系列: 主要是为了更好的推广MySQL Cluster版本,提供Cluster版本的性能和稳定性,这个版本比较少公司用,原因是出来太晚了。应用于云计算方面。
生产环境怎么选择MySQL版本?
- 选择稳定版 选择社区的GA版。
- 产品线,主要是5.1和5.5 ,选择大于5.5。
- 选择MySQL GA版发布6个月以上的版本。
- 最好向后较长时间没有更新发布的版本。
- 与开发人员使用版本的兼容。
- 测试环境跑3-6个月。
- 到生产环境非核心业务跑几个月。
MySQL使用源代码方法安装(源码问题较多,强烈建议使用yum方法安装)
注意:如果没有特殊要求,请使用系统自带的版本,或者用yum方式安装,这样比较简单方便。
首先,官方有一份安装说明文档:在官网的 documentation 页面,《MySQL Reference Manual》。
安装一下依赖包: yum -y install gcc gcc-c++ ncurses ncurses-devel cmake
。
MySQL下载: 打开MySQL官网,依次点击 Downloads
-> community
-> other Downloads
-> MySQL Mirrors
页面。这时就出现很多网站,这些是镜像站。随便选择一个镜像站(由于墙的存在,有一些你可能上不去),比如我上 Hurricane Electric / San Jose, CA, United States 这个美国网站。
在镜像站中,选择我们要的系列,我这里下载5.7系列。我们这里是下载源文件,也就是没有编译的C++代码文件。比如:mysql-5.7.21.tar.gz。不过美国的比较慢,我换成台湾的教育网: http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.7/。找一个目录,执行下面一句下载MySQL:
# 5.7版本以后,需要boost这个C++库支持,所以我们下载boost版本
wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.7/mysql-boost-5.7.21.tar.gz
# 如果不用boost版本,你自行安装boost,boost版本是boost_1_59_0
wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz
这样,就在当前目录下下载了MySQL:
添加一个MySQL用户: useradd -u 8001 -s /sbin/nologin mysql
(如果系统默认安装了Mysql数据库,我们先删除 yum remove mysql
,删除默认的mysql这个用户:userdel mysql
)。
创建数据库存放目录: mkdir /data
。
解压mysql压缩包 tar -xvf mysql-5.7.21.tar.gz
。
进入工程目录中: 解压以后,生成一个mysql-5.7.21目录,进入这个目录中:cd mysql-5.7.21
。
编译前,配置mysql: 在工程目录中mysql-5.7.21中,执行下面命令,进行配置(检查一下路径,和你的是不是一样,比如/root/MySQL-dir/mysql-5.7.21/boost/boost_1_59_0 ,这个是我的boost路径,下载boost版本的mysql,boost就在mysql-5.7.21目录中):
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data \
-DMYSQL_USER=mysql \
-DWITH_BOOST=/root/MySQL-dir/mysql-5.7.21/boost/boost_1_59_0
参数说明:
参数 | 说明 |
---|---|
-DCMAKE_INSTALL_PREFIX | 数据文件存放目录 |
-DMYSQL_UNIX_ADDR | sock文件路径 |
-DDEFAULT_CHARSET | 默认字符集 |
-DDEFAULT_COLLATION | 默认字符校对 |
-DWITH_EXTRA_CHARSETS | 扩展字符支持 默认all |
-DWITH_storage_STORAGE_ENGINE | 存储引擎的支持,默认支持MyISAM,MERGE,MEMORY,CVS存储引擎 |
-DENABLED_LOCAL_INFILE=1 | 启用加载本地数据 |
-DMYSQL_DATADIR | 数据存放目录 |
-DMYSQL_USER | mysql运行用户 |
-DWITH_BOOST | C++库boost的路径 |
配置完以后,开始编译安装: make -j 4 && make install
(这个过程比较久,耐心等待),默认安装路径为 /usr/local/mysql
。
查看一下是否报错: echo $?
(如果打印出0,表示没有致命错误)。
授权用户: 我们使用root用户进行编译安装,mysql这个用户对一些文件目录是没有读写权限的,我们要给它相关权限:chown -R mysql:mysql /usr/local/mysql/
、chown –R mysql:mysql /data
、 chmod 1777 /tmp
。
创建配置文件: 复制工程目录下的配置模板 cp support-files/my-large.cnf /etc/my.cnf
(5.7没有support-files/my-large.cnf这文件,在/etc自动生成了my.cnf)。
设置环境变量: echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
、 source !$
。
创建服务启动脚本,使得mysql开机启动:
cp support-files/mysql.server /etc/init.d/mysqld
。chmod +x /etc/init.d/mysqld
(给脚本添加执行权限)。-
vim /etc/init.d/mysqld
服务启动脚本要修改以下两个参数:# MySQL安装目录 basedir=/usr/local/mysql # 数据存放目录 datadir= /data
chkconfig mysqld on
(添加开机启动)。
初始化数据库:(5.7之前的版本在/usr/local/mysql/scripts/mysql_install_db中)
/usr/local/mysql/bin/mysql_install_db \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/data \
--user=mysql
六、LAMP架构的搭建
安全前准备
关闭SElinux: 可以临时关闭:setenforce 0
。也可以永久关闭:vim /etc/sysconfig/selinux
,将SELINUX=enforcing 改为 SELINUX=disabled,然后reboot系统。查看SElinux状态getenforce
。
安装mysql
安装mysql及其依赖: yum install httpd php php-mysql mysql-server mysql –y
。
启动httpd服务: service httpd start
。
设置httpd开机自启动: chkconfig httpd on
。
启动mysqld服务: service mysqld start
。
设置mysqld开机自启动: chkconfig mysqld on
。
数据库进行初始化配置,设置好root密码: mysql_secure_installation
(回车,设置一个密码,其它输入Y,回车)。
测试使用mysql
创建一个页面文件:vim /var/www/html/index.php
,内容如下:
<?php
phpinfo();
?>
然后打开浏览器,地址栏输入本机ip地址,或者 localhost
,回车,出现下面页面:
搭建LAMP环境部署wordpress,博客网站
-
下载wordpress:
wget https://wordpress.org/latest.tar.gz
-
解压:
tar -xf latest.tar.gz
。 -
拷贝网站程序到默认网站目录下:
cp -a wordpress/ /var/www/html/
。 -
对网站目录进行授权,不授权配置不能写入:
chown -R apache:apache /var/www/
。 -
进入mysql命令行:
mysql -uroot -p[这里写你设置的数据库密码]
。然后创建一个数据库:create database wordpress;
(注意后面那个分号也要)。查看一下这个新创建的wordpress数据库show databases;
。
上面操作已经设置完成了。可以再浏览器中输入wordpress地址:http://localhost/wordpress
:
然后选择简体中文:
然后就提示wordpress已经关联上数据库了:
接了下设置wordpress相关的配置。最后成功登陆了wordpress:
错误处理(我还没有处理的,你不必阅读):
如果你用的源代码不带有boost,可以执行下面命令:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data \
-DMYSQL_USER=mysql
但安装5.7版本,可能会报错:
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
This CMake script will look for boost in <directory>. If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
Call Stack (most recent call first):
cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
CMakeLists.txt:507 (INCLUDE)
-- Configuring incomplete, errors occurred!
这是因为,从5系列从5.7开始,需要boost库支持,打开自动下载boost库的选项 -DDOWNLOAD_BOOST=1
,同时指定库的存放位置 -DWITH_BOOST=/usr/local/bootst
(自动下载比较慢,耐心等待)。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data \
-DMYSQL_USER=mysql \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/bootst