## 1、下載MySQL源代碼

>[success] 下載地址:[https://dev.mysql.com/downloads/mysql/5.7.html#downloads](https://dev.mysql.com/downloads/mysql/5.7.html#downloads),下載到自己存放的目錄當中
```
tar -zxf mysql-5.7.26.tar.gz
cd mysql-5.7.26
```
## 2、安裝依賴
```
sudo apt install make cmake gcc g++ perl bison libaio-dev libncurses5 libncurses5-dev libnuma-dev
```
>[success] 安裝好這些依賴后,如果在編譯的時候還有提示依賴錯誤的,不要慌!谷歌一個一個慢慢來!
## 3、檢測安裝環境
```
cmake .
```
>[danger] 提示-- MySQL currently requires boost\_1\_59\_0
> 現階段sudo apt install libboost-all-dev安裝的版本為58,因此需要手動安裝boost\_1\_59
> 下載boost\_1\_59\_0源代碼
> 地址:[https://sourceforge.net/projects/boost/files/boost/1.59.0/boost\_1\_59\_0.tar.gz](https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz)
> tar xzvf boost\_1\_59\_0.tar.gz
> cd boost\_1\_59\_0
> sudo ./bootstrap.sh
> sudo ./b2 install
> 不管怎么說,這個安裝了準沒錯
## 4、開始編譯
```
cd mysql-5.7.26
```
```
cmake . -DBUILD_CONFIG=mysql_release -DCPACK_MONOLITHIC_INSTALL=ON -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQLX_TCP_PORT=33060 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQLX_UNIX_ADDR=/usr/local/mysql/mysqlx.sock -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DENABLE_DOWNLOADS=ON -DWITH_BOOST=system
```
```
sudo make
sudo make install
```
## 5、初始化
### 創建mysql組跟用戶
```
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
```
### 更改mysql目錄權限
```
cd /usr/local/mysql
sudo chown -R mysql .
sudo chgrp -R mysql .
```
### 初始化mysql,生成root用戶的臨時密碼,如:root@localhost: Cgs<1\*gDP=i9
```
sudo bin/mysqld --initialize --user=mysql
```
### 開啟SSL功能
```
sudo bin/mysql_ssl_rsa_setup
```
### 更改mysql目錄權限
```
sudo chown -R mysql .
sudo chgrp -R mysql .
```
### 測試啟動mysql
```
sudo bin/mysqld_safe --user=mysql
```
### 啟動mysql,輸入臨時密碼后更改密碼,停止mysql
```
sudo support-files/mysql.server start
sudo bin/mysql -u root -p
alter user 'root'@'localhost' identified by 'root';
sudo support-files/mysql.server stop
```
### 將mysql服務放置init.d目錄下
```
sudo cp support-files/mysql.server /etc/init.d/mysql.server
```
### service控制mysql服務
```
service mysql.server start|stop|restart|reload|force-reload|status
```

>[danger] 途中有什么問題,谷歌與百度一一解決搞定!另外啊,MySQL配置my.cnf 在MySQL5.7.1之后沒有默認了,它不需要依賴my.cnf來啟動,可以 mysql --verbose --help |grep -A 1 'Default options' 來查看默認使用的my.cnf
```
讀取順序:/etc/my.cnf > /etc/mysql/my.cnf > /usr/etc/my.cnf > ~/.my.cnf
```
- 基礎
- 安裝PHP
- 語言基礎
- 變量
- 變量操作
- 超全局數組變量
- 變量作用域
- 變量傳值方式
- 常量
- 數據類型
- 運算符
- 流程控制
- 文件包含
- 錯誤處理
- 字符串操作
- 數組
- 函數
- 進階
- 面向對象
- 提高
- TP
- 安裝項目
- 框架基礎知識
- 命令創建模塊
- URL生命周期
- 路由操作
- Request請求類
- 參數綁定
- 依賴注入
- 模板操作
- 查詢操作
- 添加操作
- laravel
- ☆目錄結構
- CSRF攻擊
- ☆路由
- ☆控制器
- ☆請求類
- ☆視圖
- ☆模板繼承
- ☆表單驗證
- ☆DB類
- ☆模型
- ☆數據庫遷移
- 類型、修飾、索引
- ☆數據填充
- ☆數據分頁
- ☆session處理
- ☆中間件
- ☆緩存操作
- ☆文件上傳
- ☆接口操作
- ☆擴展插件
- restful
- 工作
- 工作記錄
- QQ登錄
- 新浪登錄
- 微信登錄
- sphinx搜索
- 數據庫
- MySQL
- ☆數據庫操作
- ☆數據表操作
- ☆數據的操作
- 待修改
- 優化
- 存儲引擎選擇
- 列表類型選擇
- 范式
- 慢日志查詢
- 精準時間記錄查詢
- 計劃任務 explain
- 索引
- 索與事務
- 查詢緩存
- 存儲過程
- 觸發器
- 分區
- 分表
- sphinx
- 讀寫分離
- 搜索優化
- 網站靜態化
- Memcache
- Mongodb
- Readis
- php使用redis
- 服務器
- Linux
- 目錄結構
- 常用命令
- VIM編輯器
- 用戶與用戶組
- 權限管理
- 運行級別
- 網絡模式
- ssh
- 軟件安裝
- 計劃任務
- Ubuntu
- 編譯PHP7.3
- 編譯MySQL
- 編譯Nginx
- apache虛擬機配置
- 安裝composer
- Nginx
- Git