源码安装MySQL数据库需要手动完成依赖安装、编译配置、编译安装、初始化和启动服务等步骤,整个过程可以灵活调整安装参数,适配不同的服务器环境和业务需求。

安装前准备
安装系统依赖
源码编译MySQL需要依赖cmake构建工具、gcc编译器以及相关的开发库,不同系统的安装命令有所区别,以下是常见系统的依赖安装方式。
CentOS/RHEL系统执行以下命令安装依赖:
# 安装编译工具和依赖库 yum install -y gcc gcc-c++ cmake ncurses-devel bison openssl-devel
Ubuntu/Debian系统执行以下命令安装依赖:
# 安装编译工具和依赖库 apt-get update apt-get install -y gcc g++ cmake libncurses5-dev bison libssl-dev
下载MySQL源码包
可以到MySQL官方开源镜像站下载对应版本的源码包,这里以MySQL 8.0通用版本为例,下载后解压到指定目录。
# 下载源码包 wget https://downloads.ipipp.com/mysql/MySQL-8.0/mysql-8.0.33.tar.gz # 解压源码包 tar -zxvf mysql-8.0.33.tar.gz cd mysql-8.0.33
编译与安装
配置编译参数
使用cmake配置编译参数,可以指定安装路径、数据目录、字符集等核心配置,以下是常用的配置参数示例。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql # 指定安装目录 -DMYSQL_DATADIR=/usr/local/mysql/data # 指定数据目录 -DSYSCONFDIR=/etc # 指定配置文件目录 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock # 指定sock文件路径 -DDEFAULT_CHARSET=utf8mb4 # 指定默认字符集 -DDEFAULT_COLLATION=utf8mb4_general_ci # 指定默认排序规则 -DWITH_SSL=system # 使用系统SSL库 -DWITH_INNOBASE_STORAGE_ENGINE=1 # 启用InnoDB存储引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 # 启用Archive存储引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 启用Blackhole存储引擎 -DENABLED_LOCAL_INFILE=1 # 启用本地数据导入 -DMYSQL_TCP_PORT=3306 # 指定服务端口
如果配置过程中出现错误,可以先删除当前目录下的CMakeCache.txt文件,再重新执行cmake命令。
执行编译和安装
配置完成后执行编译命令,编译过程会根据服务器CPU核心数消耗一定时间,建议使用多线程编译加快速度。
# 使用4个线程编译,可根据实际CPU核心数调整 make -j4 # 执行安装 make install
初始化与配置
创建MySQL用户和目录
为了安全起见,MySQL服务不建议使用root用户运行,需要创建专用的系统用户,同时设置目录权限。
# 创建mysql系统用户 useradd -s /sbin/nologin -M mysql # 设置安装目录和数据目录的属主 chown -R mysql:mysql /usr/local/mysql chown -R mysql:mysql /usr/local/mysql/data
初始化数据库
进入MySQL安装目录,执行初始化命令,初始化成功后会输出root用户的临时密码,需要记录下来用于首次登录。
cd /usr/local/mysql # 执行初始化 bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
配置MySQL服务
将MySQL的服务脚本复制到系统服务目录,设置开机自启动,同时可以创建配置文件自定义更多参数。
# 复制服务脚本 cp support-files/mysql.server /etc/init.d/mysqld # 设置执行权限 chmod +x /etc/init.d/mysqld # 设置开机自启动 chkconfig --add mysqld chkconfig mysqld on
创建/etc/my.cnf配置文件,添加基础配置:
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock port=3306 user=mysql character-set-server=utf8mb4 [client] socket=/tmp/mysql.sock port=3306 default-character-set=utf8mb4
启动与验证
启动MySQL服务
使用系统服务命令启动MySQL,同时检查服务运行状态。
# 启动服务 service mysqld start # 检查服务状态 service mysqld status # 查看端口监听情况 netstat -tlnp | grep 3306
登录并修改密码
使用初始化时生成的临时密码登录MySQL,登录后必须修改root密码才能执行后续操作。
# 登录MySQL,输入初始化时记录的临时密码 /usr/local/mysql/bin/mysql -u root -p # 修改root密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; # 刷新权限 FLUSH PRIVILEGES;
常见问题解决
- 编译时提示cmake版本过低:需要升级cmake到指定版本以上,可到cmake官网下载对应版本源码编译安装。
- 初始化时提示目录权限错误:检查数据目录的属主是否为mysql用户,权限是否设置正确。
- 启动服务时提示sock文件不存在:检查my.cnf中socket路径配置是否和初始化时指定的路径一致。
- 登录时提示找不到mysql命令:可以将/usr/local/mysql/bin目录添加到系统PATH变量中,方便后续执行命令。