尽管大多数Linux发行版提供了通过包管理器安装MySQL的便捷方式,但在某些特定需求下,手动编译安装MySQL成为了不可或缺的技能
手动编译不仅能让你完全掌控安装过程,还能针对特定需求进行优化,确保数据库系统的最佳性能和安全性
本文将详细指导你如何手动编译安装MySQL,从准备工作到配置优化,全程无死角覆盖
一、准备工作 在进行手动编译安装之前,确保你的系统满足以下条件: 1.操作系统:本指南以CentOS 7为例,但大部分步骤适用于其他Linux发行版
2.依赖库:MySQL编译依赖于一系列开发工具和库
你需要确保这些依赖项已经安装
3.用户权限:拥有root或sudo权限,以便执行必要的系统级操作
4.下载MySQL源码:从MySQL官方网站下载最新稳定版本的源码包
安装依赖库 首先,更新系统软件包列表并安装必要的依赖项: bash sudo yum update -y sudo yum groupinstall Development Tools -y sudo yum install cmake ncurses-devel bison gcc-c++ -y 这些命令安装了GCC编译器、CMake构建系统、ncurses库(用于MySQL命令行客户端的界面)以及其他编译MySQL所需的工具和库
二、下载和解压MySQL源码 访问MySQL官方网站,下载最新稳定版本的源码包
例如,如果你下载的是`mysql-8.0.xx.tar.gz`,可以使用以下命令下载并解压: bash cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.xx.tar.gz tar -zxvf mysql-8.0.xx.tar.gz cd mysql-8.0.xx 三、编译前的配置 在编译MySQL之前,使用CMake工具进行配置
CMake能够生成适用于不同平台和编译器的Makefile文件
配置过程中,你可以指定安装路径、启用或禁用特定功能等
创建构建目录 为了保持源码目录的清洁,建议在源码目录之外创建一个专门的构建目录: bash mkdir build cd build 运行CMake配置 在构建目录中运行CMake,指定源码目录和安装目录: bash cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_BOOST=boost -DDOWNLOAD_BOOST=1 -DWITH_SSL=system -DWITH_ZLIB=system -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci 这里的参数解释如下: -`-DCMAKE_INSTALL_PREFIX=/usr/local/mysql`:指定MySQL的安装目录
-`-DWITH_BOOST=boost -DDOWNLOAD_BOOST=1`:自动下载并使用Boost库,MySQL的一些组件依赖于Boost
-`-DWITH_SSL=system -DWITH_ZLIB=system`:使用系统自带的SSL和zlib库
-`-DENABLED_LOCAL_INFILE=1`:允许通过LOAD DATA LOCAL INFILE语句加载本地数据文件
-`-DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci`:设置默认字符集和排序规则为utf8mb4,支持更多Unicode字符
四、编译和安装 配置完成后,开始编译过程
这可能需要一些时间,具体取决于你的系统性能: bash make sudo make install 编译成功后,`make install`命令会将MySQL文件复制到指定的安装目录
五、初始化数据库 安装完成后,需要初始化数据库系统
在MySQL5.7及以后的版本中,初始化过程使用`mysqld --initialize`命令
bash cd /usr/local/mysql/bin sudo ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 这里,`--user=mysql`指定运行MySQL服务的用户,`--basedir`和`--datadir`分别指定MySQL的安装目录和数据目录
初始化成功后,会生成一个临时密码,请记下这个密码,稍后在首次登录MySQL时会用到
六、设置MySQL服务 为了方便管理MySQL服务,可以创建一个systemd服务单元文件
创建MySQL用户组和用户 首先,确保有一个名为`mysql`的用户组和用户: bash sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql 创建systemd服务单元文件 在`/etc/systemd/system/`目录下创建一个名为`mysqld.service`的文件,并添加以下内容: ini 【Unit】 Description=MySQL Server After=network.target After=syslog.target 【Service】 User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE =5000 【Install】 WantedBy=multi-user.target 设置权限和启动服务 更改MySQL数据目录的所有者,并启动MySQL服务: bash sudo chown -R mysql:mysql /usr/local/mysql/data sudo systemctl daemon-reload sudo systemctl start mysqld sudo systemctl enable mysqld 七、配置MySQL MySQL安装后,需要进行一些基本配置,包括设置root密码、创建其他用户、配置权限等
获取临时密码并登录 在MySQL初始化时生成的临时密码位于MySQL数据目录的`hostname.err`文件中
找到并记下这个密码,然后使用它登录MySQL: bash sudo grep temporary password /usr/local/mysql/data/hostname.err /usr/local/mysql/bin/mysql -u root -p 修改root密码 登录后,立即修改root密码: sql ALTER USER root@localhost IDENTIFIED BY NewStrongPassword!;