MySQL,作为一个开源的关系型数据库管理系统,是许多Web应用的首选后端数据库
尽管通过Yum包管理器安装MySQL是一种快速简便的方法,但编译安装提供了更高的灵活性和可定制性
本文将详细介绍如何在CentOS上从源代码编译安装MySQL,确保你能够充分利用这一数据库系统的全部功能
一、准备工作 编译安装MySQL之前,需要确保系统具备必要的依赖项和环境
以下是准备工作步骤: 1.更新系统:首先,确保你的CentOS系统是最新的
使用以下命令更新所有软件包: bash sudo yum update -y 2.安装依赖项:编译MySQL需要一系列依赖项,包括编译工具、CMake构建工具、bison解析器生成器以及ncurses开发包
使用以下命令安装这些依赖项: bash sudo yum install -y gcc-c++ cmake make bison ncurses-devel 3.创建用户组:为了安全起见,建议为MySQL创建一个专用的用户组和用户
虽然这不是编译安装的必需步骤,但它是最佳实践: bash sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql 4.下载MySQL源代码:前往MySQL官方网站(【https://www.mysql.com/】(https://www.mysql.com/))下载最新版本的MySQL源代码包
将下载的源代码包保存到合适的目录,例如`/usr/local/src`
二、下载并解压源代码 1.下载源代码:使用wget命令从MySQL官方网站下载源代码包
请注意,你需要将`x.x.x`替换为实际的MySQL版本号: bash cd /usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-x.x.x/mysql-x.x.x.tar.gz 2.解压源代码:使用tar命令解压下载的源代码包: bash tar -zxvf mysql-x.x.x.tar.gz cd mysql-x.x.x 三、配置和编译MySQL 1.运行CMake:在编译MySQL之前,需要使用CMake进行配置
CMake将生成适合你的系统环境的Makefile文件
以下是一个基本的CMake配置命令: bash cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc/mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0 这个命令指定了MySQL的安装目录、数据目录、配置文件目录以及启用的存储引擎等选项
根据你的需求,你可以调整这些选项
2.编译MySQL:使用make命令编译MySQL源代码
这个过程可能需要一些时间,具体取决于你的系统性能: bash make 3.安装MySQL:编译完成后,使用make install命令安装MySQL: bash sudo make install 四、配置MySQL 1.设置目录权限:确保MySQL的数据目录和配置文件目录具有正确的权限
使用以下命令设置权限: bash sudo chown -R mysql:mysql /usr/local/mysql sudo chown -R mysql:mysql /etc/mysql 2.初始化数据库:在首次启动MySQL之前,需要初始化数据库
使用以下命令进行初始化: bash cd /usr/local/mysql/bin sudo ./mysqld --initialize --user=mysql 注意:初始化过程中会生成一个临时密码,请务必记录下来,稍后将需要使用它登录MySQL
3.配置MySQL服务:为了方便管理,可以将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/mysql/my.cnf PIDFile=/usr/local/mysql/data/mysqld.pid LimitNOFILE =5000 【Install】 WantedBy=multi-user.target 4.启动MySQL服务:使用systemd启动MySQL服务,并设置它在系统启动时自动启动: bash sudo systemctl start mysqld sudo systemctl enable mysqld 5.安全配置:使用初始化时生成的临时密码登录MySQL,并执行安全配置脚本,以提高MySQL的安全性
登录MySQL: bash /usr/local/mysql/bin/mysql -uroot -p 然后执行安全配置脚本: sql ALTER USER root@localhost IDENTIFIED BY 新密码; FLUSH PRIVILEGES; DELETE FROM mysql.user WHERE User=; DELETE FROM mysql.user WHERE Host=localhost AND User!=root; FLUSH PRIVILEGES; DROP DATABASE test; FLUSH PRIVILEGES; 根据你的需求,你可以调整这些安全配置命令
五、配置远程访问(可选) 如果你需要从远程计算机访问MySQL,需要修改MySQL的配置文件`/etc/mysql/my.cnf`,并开放防火墙端口
1.修改MySQL配置文件:在【mysqld】部分添加或修改以下行: ini bind-address =0.0.0.0 这将允许MySQL监听所有IPv4地址
2.重启MySQL服务:修改配置后,需要重启MySQL服务以使更改生效: bash sudo systemctl restart mysqld 3.开放防火墙端口:确保防火墙允许MySQL的默认端口(3306)的流量
使用以下命令开放端口: bash sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload 4.修改MySQL用户权限:为了允许远程用户访问,