|NO.Z.00010|——————————|^^ 構建 ^^|——|mysql&mariadb&make|
阿新 • • 發佈:2022-03-22
[Applications:mysql&mariadb&make] [Applications.Databases] [|mysql/mariadb/make.V10.2.35安裝/配置]
一、原始碼包下載:
### --- 原始碼包下載: ~~~ 地址:https://downloads.mariadb.org/mariadb/10.2.35/ // 選擇你要安裝的版本; ~~~ 下載原始碼包:mariadb-10.2.35.tar.gz包 // 原始碼包比二進位制包小好多73.9mb左右
### --- 安裝環境:
~~~ mariadb版本:10.2.35
~~~ centos版本:centos7.6.1810
~~~ 官方提示:不要在生產環境中使用beta和alpha版本的資料庫;
~~~ 他們的主要功能一般是用來測試和排錯的,不穩定,我們選擇10.2.35系列的stable資料庫
二、原始碼編譯安裝mariadb(官方建議使用cmake編譯安裝) 1、原始碼編譯安裝mariadb10.2.35的stable版本資料庫:
### --- 安裝相關的軟體依賴包: [root@localhost ~]# yum install -y bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel Installed: bison.x86_64 0:3.0.4-2.el7 bison-devel.x86_64 0:3.0.4-2.el7 boost-devel.x86_64 0:1.53.0-28.el7 cmake.x86_64 0:2.8.12.2-2.el7 gcc.x86_64 0:4.8.5-39.el7 gcc-c++.x86_64 0:4.8.5-39.el7 gnutls-devel.x86_64 0:3.3.29-9.el7_6 libaio-devel.x86_64 0:0.3.109-13.el7 libarchive-devel.x86_64 0:3.1.2-14.el7_7 libcurl-devel.x86_64 0:7.29.0-57.el7_8.1 libevent-devel.x86_64 0:2.0.21-4.el7 libxml2-devel.x86_64 0:2.9.1-6.el7.4 ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 openssl-devel.x86_64 1:1.0.2k-19.el7 zlib-devel.x86_64 0:1.2.7-18.el7
2、解壓並執行cmake### --- 準備使用者和資料的存放目錄 [root@localhost ~]# useradd -r -s /sbin/nologin mysql // 建立mysql使用者 [root@localhost ~]# mkdir -pv /data/mysqldb // 建立資料存放目錄 mkdir: created directory ‘/data’ mkdir: created directory ‘/data/mysqldb’ [root@localhost ~]# chown mysql.mysql /data/mysqldb // 把mysqldb目錄的所有者,改為mysql [root@localhost ~]# ll /data/ drwxr-xr-x 2 mysql mysql 6 Nov 7 17:07 mysqldb
### --- 解壓、編譯原始碼包;
[root@localhost ~]# tar -zxvf mariadb-10.2.35.tar.gz
[root@localhost ~]# cd mariadb-10.2.35/
[root@localhost mariadb-10.2.35]#cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \ // mysql安裝程式的目錄
-DMYSQL_DATADIR=/data/mysqldb/ \ // 資料庫資料存放目錄
-DSYSCONFDIR=/etc \ // 指定配置檔案所在目錄
-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \ // 指定soket檔案目錄;預設情況下是在/tmp/mysql.sock
// 自定義目錄後需要給該目錄授予mysql使用者讀寫執行許可權
### --- 執行如果出錯,執行rm -f CMakeCache.txt檔案
### --- -j4 與m-j8的意思就是多執行緒執行,(執行緒的意思請參考作業系統)
### --- 即4個程序去競爭多核cpu,或者8個執行緒去競爭cpu
[root@localhost mariadb-10.2.35]# make && make install
[root@localhost mariadb-10.2.35]# make -j 4 && make install
3、cmake標準檔案
### --- cmake標準檔案
[root@localhost mariadb-10.2.35]# cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysqldb/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
4、環境變數及啟動指令碼配置:
### --- 準備環境變數:
[root@localhost ~]# echo PATH=/app/mysql/bin:$PATH > /etc/profile.d/mysql.sh
[root@localhost ~]# . /etc/profile.d/mysql.sh
### --- 生成資料庫檔案
[root@localhost mariadb-10.2.35]# cd /app/mysql/
[root@localhost mysql]# scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql --basedir=/app/mysql //執行之前確定mysql使用者建立完成
ok
### --- 準備配置檔案:
[root@localhost mysql]# cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
[root@localhost mysql]# vim /etc/my.cnf
socket = /app/mysql/mysql.sock // 指定sock檔案地址
### --- 準備自啟動指令碼:
[root@localhost mysql]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
5、啟動服務:
### --- 啟動服務:
[root@localhost mysql]# chkconfig --add mysqld;service mysqld start
[root@localhost mysql]# systemctl start mysqld.service
### --- 設定開機自啟動
[root@localhost ~]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# chkconfig --add mysqld
[root@localhost ~]# chkconfig --list
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
6、設定root賬號口令
### --- 為mysql資料庫程式設定root賬號口令:
[root@localhost ~]# mysql_secure_installation
附錄一:
### --- 報錯現象
### --- 啟動服務:
[root@localhost mysql]# systemctl start mysqld.service
Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
[FAILED]
### --- 報錯分析:檢視日誌:
[root@localhost mysqldb]# cat /data/mysqldb/localhost.localdomain.err // 檢視日誌報錯;/app/mysql目錄沒有為使用者mysql設定許可權;
[ERROR] Can't start server : Bind on unix socket: Permission denied
[ERROR] Do you already have another mysqld server running on socket: /app/mysql/mysql.sock ? // 啟動服務時會報錯:因為沒有讀寫許可權:
### --- 解決方案
[root@localhost ~]# setfacl -R -m u:mysql:rwx /app/mysql/ // 為/app/mysql目錄設定mysql使用者具有讀寫許可權
[root@localhost mysqldb]# systemctl restart mysqld.service
[root@localhost mysqldb]# mysql
MariaDB [(none)]> show variables like "basedir";
+---------------+------------+
| Variable_name | Value |
+---------------+------------+
| basedir | /app/mysql |
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)