# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。