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日

相关文章

  • Go JSON编码与解码的实现

    Go JSON编码与解码的实现 在Go语言中,JSON编码与解码非常常见,Golang标准库提供了encoding/json包来支持JSON格式数据的序列化和反序列化。接下来将详细讲解如何使用encoding/json包进行JSON编码与解码。 JSON编码 JSON编码,指将Go语言中的结构体等数据类型转换成JSON格式的字符串。在Go语言中,使用json…

    C 2023年5月23日
    00
  • C++11 std::function和std::bind 的使用示例详解

    针对你提到的主题,我会给出相应的markdown格式文本,包含标题、代码块和示例说明,内容完整细致。以下是详细讲解: C++11 std::function和std::bind 的使用示例详解 在C++11标准中,引入了std::function和std::bind两个函数模板,用于支持更灵活的函数对象(函数指针、成员函数指针、函数对象和lambda表达式)…

    C 2023年5月22日
    00
  • CCleaner有哪些功能? CCleaner工具菜单的详细介绍

    CCleaner是一款非常实用的计算机清理工具,可以帮助我们快速、安全地清理电脑中的垃圾文件,加快系统运行速度,提高系统稳定性。下面是关于CCleaner的功能和工具菜单的详细介绍。 CCleaner的功能 CCleaner主要提供以下四个功能: 1. 清理系统垃圾文件 CCleaner可以自动清理电脑中的垃圾文件,包括浏览器的历史记录、cookies、临时…

    C 2023年5月23日
    00
  • C++嵌入式内存管理详情

    关于C++嵌入式内存管理,以下是完整的攻略: C++嵌入式内存管理概述 在嵌入式系统开发中,动态内存的使用是非常受限的,因此需要采用静态内存管理或者是内存池来代替动态内存分配。C++ 的运行时库也支持内存池技术,可以用于嵌入式系统开发中。 C++ 的内存池管理主要依赖于 new 和 delete 运算符来实现,通过重载 new 和 delete 运算符来达到…

    C 2023年5月23日
    00
  • C++类结构体与json相互转换

    当我们面对需要将C++类与结构体转换成json数据的需求时,最常见的方法是使用第三方库,例如jsoncpp、rapidjson等。在这里,我将为大家介绍一种简单易用的方法。它结合了C++11的特性和STL容器,使得代码简洁易读,同时具备高效性能。 步骤一:定义C++类结构体 首先,我们需要定义一个C++类或者结构体,来描述我们要转换为json数据的对象。例如…

    C 2023年5月22日
    00
  • C语言中如何进行输入和输出操作?

    当我们学习编程语言时,输入和输出是非常重要的操作。在C语言中,可以通过标准输入输出库(stdiu.h)来实现输入和输出操作。 标准输入输出库 标准输入输出库是C语言中广泛使用的库,它提供了许多函数用于输入输出操作。下面是一些常用的函数: scanf():从标准输入流中读取数据并将其存储在变量中。 printf():将数据输出到标准输出流。 getchar()…

    C 2023年4月27日
    00
  • C++实现控制台版扫雷程序

    下面是关于C++实现控制台版扫雷程序的完整攻略: 步骤一:了解游戏规则 在开发扫雷程序之前,我们需要先了解游戏规则。扫雷游戏是一款单人益智游戏,游戏棋盘被分为许多方块,有些方块里面有地雷,有些方块里面没有地雷。游戏的目标是找出没有地雷的方块,并标记出有地雷的方块。 步骤二:设计游戏窗口 在C++中,我们可以使用控制台窗口作为游戏窗口。通过调用Windows …

    C 2023年5月23日
    00
  • Visual Studio 2022最新版安装教程(图文详解)

    Visual Studio 2022最新版安装教程(图文详解) 1. 下载 Visual Studio 2022 首先,前往官方网站 Visual Studio 下载Visual Studio 2022。 2. 运行安装程序 下载完毕后,运行安装程序: 如果您下载的是 .exe 文件,则双击该文件以运行安装程序; 如果您下载的是 .iso 文件,则您需要使用…

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