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日

相关文章

  • C/S和B/S两种架构区别与优缺点分析

    C/S和B/S两种架构区别与优缺点分析 C/S架构 C/S架构即客户端/服务器架构,是一种常见的软件架构模式。C/S架构中,客户端负责与用户交互,服务器负责执行核心业务逻辑。C/S架构需要在客户端和服务器端分别安装软件,因此需要专业的IT技能来安装和维护。 优点 可以在本地运行一些比较复杂或计算密集的程序,提高了程序的执行效率。 远程协作能力较强,多个用户可…

    C 2023年5月22日
    00
  • C++精要分析lambda表达式的使用

    通过lambda表达式,我们可以以简洁、灵活的方式定义一个匿名函数。在C++11标准中,引入了lambda表达式语法,可以帮助我们在C++中更加方便地使用匿名函数。下面是关于C++ lambda表达式使用的完整攻略。 1. lambda 表达式的基本语法 lambda表达式的一般形式为: [capture list](parameters) mutable(…

    C 2023年5月23日
    00
  • DEV C++源码编译后控制台输出中文乱码问题解决

    以下是详细讲解“DEV C++源码编译后控制台输出中文乱码问题”的完整攻略: 问题原因及解决方案 开发过程中,我们经常会遇到中文输出乱码的问题。这是因为 C/C++ 标准库使用的是 ASCII 编码,而中文的编码不是 ASCII,所以输出会产生乱码。在 Windows 下,可以使用一些特殊的函数来解决这个问题。 解决方案 使用 _setmode 函数 _se…

    C 2023年5月23日
    00
  • 如何用C语言去除字符串两边的空字符

    当我们读取输入的字符串时,常常会遇到字符串两边有空格的情况。这时候我们需要一个方法去除这些空格,从而使得我们的输入更加规范化。下面是一种使用C语言去除字符串两边空字符的方法: 实现方法 Step 1:定义字符串 首先需要定义一个字符串,用来存储我们输入的字符串。例如: char str[100]; Step 2:读取字符串 接下来需要使用scanf()或fg…

    C 2023年5月23日
    00
  • C语言实现合并字符串

    当我们需要将两个字符串合并为一个字符串时,可以使用C语言的字符串操作函数来实现。下面是实现合并字符串的完整攻略。 步骤一:定义存储合并后字符串的数组 首先需要定义一个数组来存储合并后的字符串。这个数组必须预先分配足够的空间来保存合并后的字符串。可以使用C语言中的malloc()函数来动态分配存储空间,或者使用静态分配的数组。 以下是利用静态数组的方式定义一个…

    C 2023年5月23日
    00
  • C语言中如何进行函数定义和调用?

    在C语言中,函数是代码的重要组成部分,有助于提高代码的复用性和可读性。函数定义通常包括函数名、参数和函数体,可以用来完成特定的任务。下面是C语言中如何进行函数定义和调用的详细攻略。 函数定义 C语言中函数定义分为两部分:函数头和函数体。函数头通常包括函数名和参数声明,参数声明可以为空。函数体是实现函数功能的代码块。 下面是一个函数定义的示例: int max…

    C 2023年4月27日
    00
  • C语言实现进程5状态模型的状态机

    关于“C语言实现进程5状态模型的状态机”的攻略,下面是我整理的一些内容。 状态机介绍 状态机(State Machine)可以将一个系统或者一个对象的现实行为转化为状态表或者状态图的形式,从而利用一定的算法去操作或者分析这个系统/对象。在计算机领域中,状态机通常被用于解决诸如网络协议、编译器、游戏AI等的逻辑控制问题。 在操作系统中,进程的状态机通常被分为5…

    C 2023年5月23日
    00
  • 深度学习开源框架基础算法之傅立叶变换的概要介绍

    深度学习开源框架基础算法之傅立叶变换的概要介绍 什么是傅立叶变换? 傅立叶变换(Fourier Transform)是一种能够将时域上的信号转换为频域上的信号的数学工具。简单地说,它将一个时域上的波形分解成多个基频分量,每个分量代表着特定频率的振幅。这个过程是通过利用正弦和余弦函数的数学性质完成的。 傅立叶变换在深度学习中的应用 在深度学习中,经常需要对输入…

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