溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

centos7如何編譯安裝mysql

發布時間:2021-12-28 10:34:35 來源:億速云 閱讀:369 作者:小新 欄目:MySQL數據庫
# 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值

1.3 安裝基礎開發工具

yum groupinstall "Development Tools" -y
yum install cmake ncurses-devel openssl-devel bison -y

二、編譯安裝MySQL

2.1 解壓源代碼

tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33

2.2 創建MySQL用戶和組

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

2.3 創建安裝目錄和數據目錄

mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql

2.4 配置編譯選項

執行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庫位置

2.5 編譯MySQL

make -j $(nproc)

-j參數指定并行編譯的線程數,$(nproc)會自動獲取CPU核心數。

2.6 安裝MySQL

make install

三、配置MySQL

3.1 設置環境變量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile

3.2 初始化MySQL

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!@#

3.3 配置my.cnf文件

創建/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

3.4 配置systemd服務

創建服務文件/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

3.5 啟動MySQL服務

systemctl start mysql
systemctl enable mysql

四、安全配置與基本使用

4.1 修改root密碼

使用初始化時獲得的臨時密碼登錄:

mysql -uroot -p

然后執行:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
FLUSH PRIVILEGES;

4.2 創建新用戶和數據庫

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;

4.3 配置遠程訪問(可選)

如果需要遠程訪問MySQL,需要修改用戶權限并配置防火墻:

UPDATE mysql.user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;

防火墻配置:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

五、常見問題解決

5.1 編譯錯誤處理

  1. 缺少依賴包:根據錯誤提示安裝相應的開發包
  2. 內存不足:增加swap空間或減少make的并行線程數
  3. CMake版本過低:升級CMake到最新版本

5.2 啟動失敗排查

  1. 檢查錯誤日志:cat /data/mysql/mysql.err
  2. 檢查權限:確保mysql用戶對數據目錄有讀寫權限
  3. 檢查端口沖突:netstat -tulnp | grep 3306

5.3 性能優化建議

  1. 根據服務器內存調整innodb_buffer_pool_size
  2. 配置適當的字符集和排序規則
  3. 定期維護和優化表

六、總結

通過本文的詳細步驟,我們成功在CentOS 7系統上完成了MySQL 8.0的編譯安裝。相比直接使用yum安裝,編譯安裝雖然過程復雜,但可以獲得更好的性能和更靈活的配置選項。建議在生產環境中使用前,充分測試MySQL的穩定性和性能。

附錄

A. 常用MySQL命令

  • 啟動服務:systemctl start mysql
  • 停止服務:systemctl stop mysql
  • 重啟服務:systemctl restart mysql
  • 查看狀態:systemctl status mysql

B. 參考資源

  1. MySQL官方文檔:https://dev.mysql.com/doc/
  2. MySQL編譯選項參考:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
  3. CentOS官方文檔:https://www.centos.org/docs/

C. 版本說明

  • 本文基于MySQL 8.0.33編寫
  • 測試環境為CentOS 7.9
  • 最后更新日期:2023年10月

”`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女