您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# CentOS7如何编译安装MySQL
## 前言
在Linux系统中安装MySQL数据库有多种方式,其中编译安装是最灵活但也最复杂的一种方式。通过编译安装,我们可以获得以下优势:
1. 可以自定义MySQL的功能模块
2. 能够选择最新的MySQL版本
3. 可以针对特定硬件进行优化
4. 完全控制安装路径和配置参数
本文将详细介绍在CentOS 7系统上从源代码编译安装MySQL 8.0的全过程,包括环境准备、依赖安装、编译配置、安装部署以及初始化配置等步骤。
## 一、环境准备
### 1.1 系统要求
- CentOS 7.x 操作系统(建议使用最小化安装)
- 至少2GB内存(编译过程内存消耗较大)
- 至少10GB可用磁盘空间
- root用户权限或具有sudo权限的普通用户
### 1.2 下载MySQL源代码
访问MySQL官方下载页面(https://dev.mysql.com/downloads/mysql/),选择"Source Code"版本:
```bash
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
验证下载文件的完整性:
md5sum mysql-8.0.33.tar.gz
# 对比官方提供的MD5值
yum groupinstall "Development Tools" -y
yum install cmake ncurses-devel openssl-devel bison -y
tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
执行cmake进行配置:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-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 \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=boost
常见参数说明:
CMAKE_INSTALL_PREFIX
:MySQL安装目录MYSQL_DATADIR
:MySQL数据存储目录SYSCONFDIR
:配置文件目录WITH_xxx_STORAGE_ENGINE
:启用各种存储引擎DEFAULT_CHARSET
:默认字符集WITH_BOOST
:指定Boost库位置make -j $(nproc)
-j
参数指定并行编译的线程数,$(nproc)
会自动获取CPU核心数。
make install
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
初始化完成后会显示root用户的临时密码,请务必记录下来:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abc123!@#
创建/etc/my.cnf配置文件:
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
port=3306
user=mysql
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
socket=/tmp/mysql.sock
default-character-set=utf8mb4
创建服务文件/etc/systemd/system/mysql.service:
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/data/mysql/mysql.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
重新加载systemd配置:
systemctl daemon-reload
systemctl start mysql
systemctl enable mysql
使用初始化时获得的临时密码登录:
mysql -uroot -p
然后执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
FLUSH PRIVILEGES;
CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'testuser'@'%' IDENTIFIED BY 'Test123!';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'%';
FLUSH PRIVILEGES;
如果需要远程访问MySQL,需要修改用户权限并配置防火墙:
UPDATE mysql.user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
防火墙配置:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
cat /data/mysql/mysql.err
netstat -tulnp | grep 3306
innodb_buffer_pool_size
通过本文的详细步骤,我们成功在CentOS 7系统上完成了MySQL 8.0的编译安装。相比直接使用yum安装,编译安装虽然过程复杂,但可以获得更好的性能和更灵活的配置选项。建议在生产环境中使用前,充分测试MySQL的稳定性和性能。
systemctl start mysql
systemctl stop mysql
systemctl restart mysql
systemctl status mysql
”`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。