Mac系统下源码编译安装MySQL 5.7.17的教程

下面是“Mac系统下源码编译安装MySQL 5.7.17的教程”:

准备工作

在开始安装前,需要准备一下基础工作:

  1. 安装Xcode开发环境

XcodeMac 上的 IDE 工具,可以辅助开发各种编程语言的程序。获取安装包方式有两种:

  1. Mac App Store 中搜索 Xcode 下载安装(需要苹果账号);
  2. 前往苹果的开发者网站手动下载并安装。(需要注册开发者账号)

  3. 安装 MySQL 依赖库

为了成功编译安装 MySQL ,需要安装一些依赖库,可以通过 Homebrew 来安装:

shell
brew install cmake make openssl

下载MySQL源码

MySQL 的官网下载源码包:

# 打开官方网站,找到下载路径
open https://dev.mysql.com/downloads/mysql/

编译安装

现在进入到主题:如何在 Mac 上通过源码编译方式安装 MySQL 软件。下面是具体步骤:

  1. 解压缩源码

shell
tar xzvf mysql-5.7.17.tar.gz
cd mysql-5.7.17

  1. 配置并编译源码

shell
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_SSL=yes \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=ON \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_ZLIB=system \
-DWITH_SSL=bundled \
-DWITH_BOOST=/opt/local/include/mysql57/mysql
make -j 8
make install

  • -DCMAKE_INSTALL_PREFIX: 表示安装路径,如果需要修改安装目录,请加上此参数;
  • -DMYSQL_DATADIR: 表示指定数据存放的路径,可以自行设定;
  • -DSYSCONFDIR: 表示配置文件存储的路径;
  • -DWITH_SSL: 表示启用 ssl 支持,注意,如果为yes,需要配合 openssl 来使用;
  • -DWITH_MYISAM_STORAGE_ENGINE: 表示启用 MyISAM 存储引擎;
  • -DWITH_INNOBASE_STORAGE_ENGINE: 表示启用 InnoDB 存储引擎;
  • -DWITH_PARTITION_STORAGE_ENGINE: 表示启用 Partition 存储引擎;
  • -DWITH_BLACKHOLE_STORAGE_ENGINE: 表示启用 blackhole 存储引擎;
  • -DENABLED_LOCAL_INFILE: 启用 LOAD DATA LOCAL 语句;
  • -DENABLED_PROFILING: 表示启用性能分析模块;
  • -DWITH_DEBUG: 表示是否启用调试功能,一般情况下可设为 0;
  • -DWITH_READLINE=1: 表示使用 readline 来增强终端的交互性;
  • -DWITH_ZLIB=system: 使用系统自带的 zlib 库;
  • -DWITH_SSL=bundled: 使用自带的 openssl 库;
  • -DWITH_BOOST=/opt/local/include/mysql57/mysql: 指定 MySQL 可选的额外功能库。

  • 配置文件

MySQL 的配置文件存放在 /usr/local/mysql/support-files/ 下,我们需要进行一些定制,以满足我们的要求:

shell
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf

配置文件中有很多参数,需要根据自己的具体场景来修改,例如:

```ini
[mysqld]
user = mysql
datadir = /usr/local/mysql/data
skip-external-locking
default-time-zone = '+08:00'

[mysql]
port = 3306
default-character-set = utf8mb4
```

  1. 创建用户和data文件夹

shell
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/

上面的命令分别创建了MYSQL用户组、MYSQL用户、以及数据存放目录,并设置相应的所有者。

  1. 初始化数据库

shell
# 需要注意的是,一定要切换到mysqld的bin目录下执行命令
cd /usr/local/mysql/bin/
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

初始化完成后,可以用以下命令查看默认密码:

shell
grep 'temporary password' /usr/local/mysql/data/error.log

  1. 启动和停止 MySQL

shell
# 启动 MySQL
sudo /usr/local/mysql/support-files/mysql.server start
# 关闭 MySQL
sudo /usr/local/mysql/support-files/mysql.server stop
# 重启 MySQL
sudo /usr/local/mysql/support-files/mysql.server restart

示例

下面两个示例演示一些常用的 MySQL 操作。

示例1:创建一个学生表并插入数据

CREATE TABLE students (
  id INT NOT NULL,
  name VARCHAR(20) NOT NULL DEFAULT "",
  PRIMARY KEY (id)
);

INSERT INTO students (id, name) VALUES
    (1, 'Alice'),
    (2, 'Bob'),
    (3, 'Charlie');

示例2:查询并输出学生表的内容

SELECT * FROM students;

以上就是关于“Mac 系统下源码编译安装 MySQL 5.7.17 的教程”的详细攻略。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mac系统下源码编译安装MySQL 5.7.17的教程 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • QT基于TCP实现网络聊天室程序

    首先我们需要准备QT的开发环境,并且熟悉QT的基本开发流程。在此不再赘述。 创建QT项目 首先需要创建一个QT项目,选择一个QT GUI Application即可。在创建过程中,选择需要包含网络模块。 添加TCP服务器 我们需要添加一个TCP服务器来实现网络聊天室。在创建TCP服务器时,需要指定服务器绑定的IP地址和端口号。以下是示例代码: QTcpSer…

    C 2023年5月30日
    00
  • jQuery解析Json实例详解

    下面是《jQuery解析Json实例详解》的完整攻略。 1. 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语言的一个子集。 2. jQuery解析JSON数据的方法 jQuery提供了专门的方法用于解析JSON数据,这个方法叫做$.parseJSON(),它能将符合JS…

    C 2023年5月23日
    00
  • Java异常链表throw结构assert详细解读

    请看下面的详细讲解: Java异常链 Java中的异常链是指,当一个异常被抛出时,可能会引发另一个异常。这个被引发的异常可以包含原始异常的信息。这种机制称为异常链。 在Java中,异常链可以通过调用getCause()方法来获得。该方法返回一个Throwable对象,该对象是造成当前异常的原因。如果没有原因,则返回null。 public class Exc…

    C 2023年5月23日
    00
  • C语言 switch-case语句

    以下是C语言 switch-case语句的完整使用攻略: 什么是switch-case语句? C语言中的switch-case语句是一种用于多分支条件判断的语句,它可以根据不同的取值来执行不同的代码块。switch语句会根据一个表达式的值与case关键字后面的值进行匹配,如果匹配成功,则会执行与之对应的代码块。当匹配失败时,可以使用default关键字来执行…

    C 2023年5月9日
    00
  • C++实现地铁自动售票系统程序设计

    C++实现地铁自动售票系统程序设计攻略 概述 地铁自动售票系统是一种基于计算机技术的智能化自助售票系统,可以方便快捷地为乘客提供地铁车票的购买、充值、查询、退款等服务。本文主要介绍如何使用C++语言实现地铁自动售票系统的设计以及开发方法。 实现步骤 第一步:确定功能需求 地铁自动售票系统的主要功能包括: 售卖地铁票和充值。要求用户输入选择的地铁线路和数量,然…

    C 2023年5月23日
    00
  • Java语法中Lambda表达式无法抛出异常的解决

    Java 8引入的Lambda表达式是一种比较方便的编程方式,但有一点需要注意:Lambda表达式不能抛出异常。而在实际应用中,有时需要在Lambda表达式中抛出异常,这时候就需要找到“Java语法中Lambda表达式无法抛出异常的解决方法”。 要解决这个问题,可以使用函数式接口和Lambda表达式结合使用,来使Lambda表达式可以抛出异常。 具体步骤如下…

    C 2023年5月22日
    00
  • C语言实现的ls命令源码分享

    下面我来详细讲解一下“C语言实现的ls命令源码分享”的完整攻略。该攻略主要包含以下内容: 前置知识介绍 实现思路说明 代码实现详解 示例说明 1. 前置知识介绍 在学习该攻略之前,需要您掌握以下知识: Linux系统基本使用命令: cd:切换工作目录 ls:列出目录下的文件和目录 mkdir:创建目录 touch:创建空文件 rm:删除文件或目录 rmdir…

    C 2023年5月23日
    00
  • C语言MultiByteToWideChar和WideCharToMultiByte案例详解

    C语言MultiByteToWideChar和WideCharToMultiByte案例详解 简介 在C语言中,字符编码的转换是一个基本操作,这通常需要用到 MultiByteToWideChar 和 WideCharToMultiByte 这两个Windows API函数。 MultiByteToWideChar 将ANSI格式的字符串(即单字节字符串)转…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部