預備知識: ?? ?MySQL/MariaDB的源碼編譯需要借助于:cmake: ?? ?cmake的重要特性之一是其獨立于源碼(out-of-source)的編譯功能,即編譯工作可以在另一個指定的目錄中 ?? ?而非源碼目錄中進行,這可以保證源碼目錄不受任何一次編譯的影響,因此在同一個源碼樹上可以進行多次 ?? ?不同的編譯,如針對于不同平臺編譯。
cmake基礎簡介: ?? ??? ?使用cmake編譯mariadb-5.5 ?? ??? ?cmake指定編譯選項的方式不同于make,其實現方式對比如下: ?? ??? ?./configure?????????? cmake . ?? ??? ?./configure --help??? cmake . -LH or ccmake . ?? ??? ?指定安裝文件的安裝路徑時常用的選項: ?? ??? ?-DCMAKE_INSTALL_PREFIX=/usr/local/mysql ?? ??? ?-DMYSQL_DATADIR=/data/mysql ?? ??? ?-DSYSCONFDIR=/etc ?? ??? ?默認編譯的存儲引擎包括:csv、myisam、myisammrg和heap。若要安裝其它存儲引擎,可以使用類似如下編譯選項: ?? ??? ?-DWITH_INNOBASE_STORAGE_ENGINE=1 ?? ??? ?-DWITH_ARCHIVE_STORAGE_ENGINE=1 ?? ??? ?-DWITH_BLACKHOLE_STORAGE_ENGINE=1 ?? ??? ?-DWITH_FEDERATED_STORAGE_ENGINE=1 ?? ??? ?若要明確指定不編譯某存儲引擎,可以使用類似如下的選項: ?? ??? ?-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1 ?? ??? ?比如: ?? ??? ?-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 ?? ??? ?-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 ?? ??? ?-DWITHOUT_PARTITION_STORAGE_ENGINE=1 ?? ??? ?如若要編譯進其它功能,如SSL等,則可使用類似如下選項來實現編譯時使用某庫或不使用某庫: ?? ??? ?-DWITH_READLINE=1 ?? ??? ?-DWITH_SSL=system ?? ??? ?-DWITH_ZLIB=system ?? ??? ?-DWITH_LIBWRAP=0 ?? ??? ?其它常用的選項: ?? ??? ?-DMYSQL_TCP_PORT=3306 ?? ??? ?-DMYSQL_UNIX_ADDR=/tmp/mysql.sock ?? ??? ?-DENABLED_LOCAL_INFILE=1 ?? ??? ?-DEXTRA_CHARSETS=all ?? ??? ?-DDEFAULT_CHARSET=utf8 ?? ??? ?-DDEFAULT_COLLATION=utf8_general_ci ?? ??? ?-DWITH_DEBUG=0 ?? ??? ?-DENABLE_PROFILING=1 ?? ??? ?如果想清理此前的編譯所生成的文件,則需要使用如下命令: ?? ??? ?make clean ?? ??? ?rm CMakeCache.txt
#######################################################################
????????????????????????????????OK,現在正式開始
#######################################################################
1、安裝依賴包:
????#?yum?install?ncurses-devel?openssl-devel?libevent-devel?jemalloc-devel?cmake
?? ?#jemalloc-devel 在epel源中,其他的都在base源中已提供;
??? # cmake也可以使用源碼進行編譯安裝: ?? ?cmake是一個跨平臺編譯器:
????????#?tar?xf?cmake-2.8.8.tar.gz#?cd?cmake-2.8.8#?./bootstrap#?make?#?make?install
2、安裝開發環境: ?? ?# yum groupinstall "Development Tools" "Server Platform Development" ?? ?新添磁盤,建立LVM作為mysql的數據目錄:
????#?fdisk?-l?/dev/sdbDisk?/dev/sdb:?53.7?GB,?53687091200?bytes,?104857600?sectorsUnits?=?sectors?of?1?*?512?=?512?bytesSector?size?(logical/physical):?512?bytes?/?512?bytesI/O?size?(minimum/optimal):?512?bytes?/?512?bytesDisk?label?type:?dosDisk?identifier:?0x6e65abc7Device?Boot??????Start?????????End??????Blocks???Id??System/dev/sdb1????????????2048????41945087????20971520???8e??Linux?LVM
?? ?#######################################################################
??? #創建邏輯卷:
????????#?pvcreate?/dev/sdb1#?vgcreate?myvg?/dev/sdb1#?lvcreate?-L?10G?-n?mydata?/dev/myvg
?? ?#格式化邏輯卷: ?? ???
?#mke2fs?-t?ext4?/dev/myvg/mydata
?? ?#在fstab文件中添加為開機自動掛載:
????????#?vim?/etc/fstab/dev/mapper/centos-root?/???????????????????????xfs?????defaults????????0?0UUID=daffae2e-9598-4d9c-807e-c47a2d07d96a?/boot???????????????????xfs?????defaults????????0?0/dev/mapper/centos-home?/home???????????????????xfs?????defaults????????0?0/dev/mapper/centos-swap?swap????????????????????swap????defaults????????0?0/dev/myvg/mydata????????/mydata/data????????????????????ext4????defaults????????0?0
######################################################################
3、編譯安裝MariaDB:
????#?groupadd?-r?-g?306?mysql#?useradd?-r?-g?306?-u?306?mysql#?id?mysqluid=306(mysql)?gid=306(mysql)?groups=306(mysql)#?tar?xvf?mariadb-5.5.46.tar.gz?#?cd?mariadb-5.5.46/#?cmake?.?-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb?-DMYSQL_DATADIR=/mydata/data?-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?-DMYSQL_UNIX_ADDR=/tmp/mysql.sock?-DDEFAULT_CHARSET=utf8?-DDEFAULT_COLLATION=utf8_general_ci#?make?#?make?install
4、初始化數據庫: ?
???#?cd?/usr/local/mysql/#?chown?-R?mysql:mysql?*#?./scripts/mysql_install_db?--datadir=/mydata/data?--user=mysql#?chown?-R?root?*
5、提供腳本:
????#?cd?/usr/local/mysql/#?cp?support-files/mysql.server?/etc/rc.d/init.d/mysqld?#?chmod?+x?/etc/rc.d/init.d/mysqld#?chkconfig?mysqld?on#?chkconfig?--list
6、提供配置文件:
????#?cp?support-files/my-large.cnf?/etc/my.cnf#?vim?/etc/my.cnf#在文件中添加下述四行:thread_concurrency?=?4datadir?=?/mydata/datainnodb_file_per_table?=?ONskip_name_resolve?=?ON
7、提供二進制文件,庫文件,頭文件,man手冊: ?? ?提供二進制文件: ??
??????#?echo?"export?PATH=/usr/local/mysql/bin:$PATH"?>?/etc/profile.d/mysql.sh#?.?/etc/profile.d/mysql.sh
?? ?提供庫文件: ?? ???
?#?echo?"/usr/local/mysql/lib/"?>?/etc/ld.so.conf.d/mysql.conf
?? ?提供頭文件: ?? ??
???#?ln?-sv?/usr/local/include/?/usr/include/mysql
?? ?提供man手冊:
????????#?echo?"MANPATH?/usr/local/mysql"?>>?/etc/man.conf#?man?-M?/usr/local/mysql/man?mysqld?????#讓man手冊立刻生效為最新;
8、啟動mysql服務,連接MariaDB:
????#?service?mysqld?start[root@localhost?~]#?ss?-tnl?|?grep?:3306LISTEN?????0??????50????????????????????????*:3306?????????????????????*:*??#?mysql
初始化MariaDB: 1、初始化第一個操作 : ?? ?配置文件my.cnf ?? ??? ?集中式的配置:多個應用程序共用的配置文件: ?? ??? ??? ?[mysqld] ?? ??? ??? ?[mysqld_safe] ?? ??? ??? ?[clent] ?? ?# mysqld --help --verbose | head -20 ?? ??? ?Default options are read from the following files in the given order: ?? ??? ?/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf ?? ?# 此處說明了,mysql配置文件的加載順序; ?? ?使用配置文件的方式: ?? ??? ?(1)它一次查找每個需要查找的文件,結果是所有文件的并集; ?? ??? ?(2)如果某參數在多個文件中出現多次,后讀取的最終生效; ?? ?# /usr/local/mysql/bin/mysqld --help --verbose ?? ??? ?(1)顯示mysqld程序啟動時可用的選項,通常都是長選項; ?? ??? ?(2)顯示mysqld的配置文件中可用的服務變量; ?? ??? ??? ?mysql> SHOW GLOBAL VARIABLES; ?? ??? ??? ?msyql> SHOW SESSION VARIABLES;2、初始化第二個操作: ?? ?#查看已存在的所有用戶: ?? ?mysql> SELECT Host,User,Password FROM mysql.user; ?? ?(1)刪除所用匿名用戶: ?? ??? ?mysql> DROP USER ''@'localhost'; ?? ??? ?mysql> DROP USER ''@'localhost.localdomain'; ?? ??? ?mysql> DROP USER ''@'127.0.0.1'; ?? ?(2)給所有的root用戶設定密碼: ?? ??? ?第一種方式: ?? ??? ??? ?mysql> SET PASSWORD FOR root@127.0.0.1 = PASSWORD('kalaguiyin'); ?? ??? ?第二種方式: ?? ??? ??? ?mysql> USE mysql; ?? ??? ??? ?mysql> UPDATE user SET PASSWORD = PASSWORD('kalaguiyin') WHERE user = 'root'; ?? ??? ??? ?mysql> FLUSH PRIVILEGES; ?? ??? ?第三種方式: ?? ??? ??? ?# mysqladmin -uroot -hlocalhost password 'kalaguiyin' -p ?? ??? ??? ??? ?#按提示輸入密碼即可修改成功;-h 可用指定遠程服務器的IP地址; ?? ??? ??? ?# mysqladmin -uroot -hlocalhost -p flush-privileges; OK,此時使用mysql命令再次登錄數據庫時,就需要登錄密碼了: ?? ?例如:# mysql -h127.0.0.1 -uroot -p
學習過程中的記錄,請各位高手指下留情!
補充:
補充,在CentOS 7 上已經不習慣使用service mysqld start的方式來啟動服務: 故使用systemctl方式啟動:
#?vim?/usr/lib/systemd/mysqld.service#?Don't?forget?to?reload?systemd?daemon?after?you?change?unit?configuration:#?#?root>?systemctl?--system?daemon-reload#[Unit]Description=MariaDB?database?serverAfter=syslog.targetAfter=network.target#[Service]Type=simpleUser=mysqlGroup=mysql##?Note:?we?set?--basedir?to?prevent?probes?that?might?trigger?SELinux?alarms,ExecStart=/usr/local/mysql/bin/mysqld_safe?--basedir=/usr/local/mysql##?Give?a?reasonable?amount?of?time?for?the?server?to?start?up/shut?downTimeoutSec=300##?Place?temp?files?in?a?secure?directory,?not?/tmpPrivateTmp=false#[Install]WantedBy=multi-user.target#?systemctl?daemon-reload
#此時便可以使用systemctl管理mysqld服務了:
#?systemctl?start?mysqld.service
[root@localhost?systemd]#?systemctl?stop?mysqld.service?
[root@localhost?systemd]#?ss?-tnlState???????Recv-Q?Send-Q??????????????????Local?Address:Port????????????????????Peer?Address:Port?LISTEN??????0??????128?????????????????????????????????*:22?????????????????????????????????*:*?????LISTEN??????0??????100?????????????????????????127.0.0.1:25?????????????????????????????????*:*?????LISTEN??????0??????128????????????????????????????????:::80????????????????????????????????:::*?????LISTEN??????0??????128????????????????????????????????:::22????????????????????????????????:::*?????LISTEN??????0??????100???????????????????????????????::1:25????????????????????????????????:::*?????LISTEN??????0??????128????????????????????????????????:::443???????????????????????????????:::*?????
[root@localhost?systemd]#?systemctl?start?mysqld.service?
[root@localhost?systemd]#?ss?-tnlState???????Recv-Q?Send-Q??????????????????Local?Address:Port????????????????????Peer?Address:Port?LISTEN??????0??????50??????????????????????????????????*:3306???????????????????????????????*:*?????LISTEN??????0??????128?????????????????????????????????*:22?????????????????????????????????*:*?????LISTEN??????0??????100?????????????????????????127.0.0.1:25?????????????????????????????????*:*?????LISTEN??????0??????128????????????????????????????????:::80????????????????????????????????:::*?????LISTEN??????0??????128????????????????????????????????:::22????????????????????????????????:::*?????LISTEN??????0??????100???????????????????????????????::1:25????????????????????????????????:::*?????LISTEN??????0??????128????????????????????????????????:::443???????????????????????????????:::*
轉載于:https://blog.51cto.com/kalaguiyin/1712948
總結
以上是生活随笔 為你收集整理的CentOS 7 源码编译MariaDB 5.5.46 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。