文章目錄
- 一、環境準備
- 二、源碼解壓與依賴
- 三、CMake 編譯配置
- 四、配置 MySQL
- 權限管理
- 修改配置文件 `/etc/my.cnf`
- 五、環境變量設置
- 六、數據庫初始化
- 七、服務管理
- 八、賬號密碼管理
一、環境準備
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
- gcc / gcc-c++:編譯工具
- ncurses / ncurses-devel:字符終端交互庫
- bison:語法分析器
- cmake:MySQL 編譯工具
創建 MySQL 專用用戶:
useradd -s /sbin/nologin mysql
二、源碼解壓與依賴
將mysql-5.7.17.tar.gz解壓
tar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boost
三、CMake 編譯配置
進入源碼目錄:
cd /opt/mysql-5.7.17/
執行 cmake(關鍵參數):
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
編譯安裝:
make -j 4 && make install
?? 注意:如果 CMake 出錯,解決后需刪除 CMakeCache.txt
再重新執行。
上面每個說明
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安裝路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql進程監聽套接字文件(數據庫連接文件)的存儲路徑
-DSYSCONFDIR=/etc \ #指定配置文件的存儲路徑
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定進程文件的存儲路徑
-DDEFAULT_CHARSET=utf8 \ #指定默認使用的字符集編碼,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默認使用的字符集校對規則
-DWITH_EXTRA_CHARSETS=all \ #指定支持其他字符集編碼
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安裝INNOBASE存儲引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安裝ARCHIVE存儲引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安裝BLACKHOLE存儲引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安裝FEDERATED存儲引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \ #指定數據庫文件的存儲路徑
-DWITH_BOOST=/usr/local/boost \ #指定boost的路徑,若使用mysql-boost集成包安裝則-DWITH_BOOST=boost
-DWITH_SYSTEMD=1 #生成便于systemctl管理的文件存儲引擎選項:
MYISAM,MERGE,MEMORY和cSv引擎是默認編譯到服務器中,并不需要明確地安裝。靜態編譯一個存儲引擎到服務器,使用-DWITH engine STORAGE ENGINE= 1
可用的存儲引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBD,IMNOBASB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema)
四、配置 MySQL
權限管理
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
修改配置文件 /etc/my.cnf
把里面的全刪掉改成下面的
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
default-character-set=utf8[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES[mysql]
port = 3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
auto-rehash
詳細說明
[client] 客戶端配置port = 3306:客戶端連接 MySQL 的端口,默認是 3306。
socket=/usr/local/mysql/mysql.sock:客戶端通過 Unix socket 文件連接 MySQL(Linux/Unix 環境)。
default-character-set=utf8:默認字符集為 UTF-8。[mysqld] 服務器端配置user = mysql:MySQL 服務以 `mysql` 用戶身份運行。
basedir=/usr/local/mysql:MySQL 安裝目錄。
datadir=/usr/local/mysql/data:MySQL 數據庫文件存放目錄。
port = 3306:MySQL 服務監聽端口。
character-set-server=utf8:服務器默認字符集 UTF-8。
pid-file = /usr/local/mysql/mysqld.pid:存放 MySQL 進程 ID 的文件路徑。
socket=/usr/local/mysql/mysql.sock:服務器端 socket 文件路徑。
bind-address = 0.0.0.0:允許任意 IP 連接 MySQL(0.0.0.0 表示監聽所有網卡)。
skip-name-resolve:關閉 DNS 解析,使用 IP 地址驗證用戶,提高連接速度。
max\_connections=2048:最大允許同時連接數。
default-storage-engine=INNODB:默認存儲引擎為 InnoDB。
max\_allowed\_packet=16M:最大允許傳輸的數據包大小。
server-id = 1:MySQL 唯一 ID,常用于主從復制。
sql\_mode=...:設置 SQL 模式,控制 SQL 語法和數據校驗規則,如嚴格模式、禁止零日期、ANSI 引號模式等。---### `[mysql]` 客戶端工具配置port = 3306:客戶端連接端口。
default-character-set=utf8:客戶端默認字符集 UTF-8。
socket=/usr/local/mysql/mysql.sock:使用 Unix socket 文件連接。
auto-rehash:開啟自動補全功能(方便在 `mysql` 命令行中自動補全數據庫和表名)。
五、環境變量設置
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
六、數據庫初始化
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
七、服務管理
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3306
八、賬號密碼管理
設置 root 密碼:
mysqladmin -u root -p password "123456"
登錄:
mysql -u root -p123456
如果navicat連不上就
systemctl stop firewalld.service
systemctl stop iptables.service
setenforce 0
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456(密碼)' WITH GRANT OPTION;
然后還要刷新權限
FLUSH PRIVILEGES;