php如何编译安装mysql

发布时间:2022-01-24 10:32:42 作者:iii
来源:亿速云 阅读:164
# PHP如何编译安装MySQL

## 前言

在PHP开发环境中,MySQL作为最流行的关系型数据库之一,经常需要与PHP配合使用。虽然大多数情况下我们可以直接使用预编译的包管理器安装MySQL(如`apt`或`yum`),但在某些特殊场景下(如定制化需求、特定版本要求或学习目的),可能需要从源代码编译安装MySQL。本文将详细介绍如何在Linux环境下通过源码编译安装MySQL,并配置PHP与之交互。

---

## 环境准备

在开始编译前,请确保系统已安装以下依赖工具:

```bash
# Ubuntu/Debian
sudo apt update
sudo apt install -y cmake gcc g++ make libncurses5-dev libssl-dev libboost-all-dev

# CentOS/RHEL
sudo yum install -y cmake gcc gcc-c++ make ncurses-devel openssl-devel

注意:MySQL 8.0+需要Boost库支持,建议提前安装Boost 1.70+版本。


下载MySQL源码

  1. 访问MySQL官方下载页:https://dev.mysql.com/downloads/mysql/
  2. 选择”Source Code”版本(如MySQL Community Server 8.0.33)
  3. 获取下载链接后使用wget获取:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33

编译配置

使用CMake进行编译配置,以下是最常用的配置选项:

mkdir build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/var/lib/mysql \
-DWITH_BOOST=../boost \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci

关键参数说明: - CMAKE_INSTALL_PREFIX:指定安装目录 - MYSQL_DATADIR:数据库文件存储路径 - WITH_BOOST:指定Boost库路径 - DEFAULT_CHARSET:设置默认字符集为utf8mb4(支持完整Unicode)


编译与安装

执行编译(建议使用多核加速):

make -j$(nproc)  # 根据CPU核心数并行编译
sudo make install

编译过程可能需要30分钟到2小时不等,取决于硬件性能。


初始化MySQL

  1. 创建mysql用户和组:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
  1. 初始化数据目录:
sudo mkdir -p /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql

注意: 初始化后会生成临时root密码,务必记录在安全位置:

[Note] A temporary password is generated for root@localhost: Abc123!@#
  1. 安装SSL证书
sudo mysql_ssl_rsa_setup

启动MySQL服务

  1. 创建systemd服务文件/etc/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 启动服务:
sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql

配置PHP连接MySQL

确保PHP已安装mysql扩展(PHP 7+推荐使用mysqli或PDO):

sudo apt install php-mysql  # Ubuntu
# 或
sudo yum install php-mysqlnd  # CentOS

测试连接的PHP代码示例:

<?php
$mysqli = new mysqli("localhost", "root", "Abc123!@#");
if ($mysqli->connect_error) {
    die("连接失败: " . $mysqli->connect_error);
}
echo "MySQL版本: " . $mysqli->server_version;
$mysqli->close();
?>

安全加固

  1. 运行安全脚本:
sudo /usr/local/mysql/bin/mysql_secure_installation
  1. 建议操作:
    • 修改root密码
    • 移除匿名用户
    • 禁止root远程登录
    • 移除测试数据库

常见问题解决

1. 编译时内存不足

增加swap空间或使用make -j2减少并行编译任务

2. 启动时报错”error while loading shared libraries”

添加MySQL库路径到系统配置:

echo "/usr/local/mysql/lib" | sudo tee /etc/ld.so.conf.d/mysql.conf
sudo ldconfig

3. PHP无法连接MySQL

检查是否已加载mysql扩展:

php -m | grep mysql

结语

通过源码编译安装MySQL虽然步骤较多,但可以完全掌控编译参数和安装路径,特别适合需要深度定制化的环境。对于生产环境,建议在测试服务器验证后再部署,并定期备份重要数据。

附:本文以MySQL 8.0为例,其他版本可能略有差异,请参考对应版本的官方文档。 “`

推荐阅读:
  1. php编译安装
  2. PHP -- 编译安装

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php mysql

上一篇:Linux系统如何安装pip

下一篇:在Linux系统中使用AIDE监控文件的完整性是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》