【MySQL】CentOS 7上源碼編譯安裝MySQL 5.7

一涨颜、安裝準(zhǔn)備


安裝依賴包

# yum? -y? install? gcc gcc-c++ ncurses ncurses-devel cmake bison

相關(guān)依賴包的作用:cmake:由于從 MySQL5.5 版本開始棄用了常規(guī)的 configure 編譯方法几于,所以需要 CMake 編譯器瑟押,用于設(shè)置 mysql 的編譯參數(shù)昧廷。如:安裝目錄配阵、數(shù)據(jù)存放目錄菠赚、字符編碼妓美、排序規(guī)則等。

boost:從 MySQL 5.7.5 開始 Boost 庫是必需的较性,mysql 源碼中用到了 C++的 Boost 庫用僧,要求必須安裝boost1.59.0 或以上版本

gcc:是 Linux 下的 C 語言編譯工具结胀,mysql 源碼編譯完全由 C 和 C++編寫,要求必須安裝GCC

bison:Linux 下 C/C++語法分析器

ncurses:字符終端處理庫


二责循、下載相應(yīng)源碼包


#? wget?https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

#? wget?https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.9.tar.gz



三糟港、新建MySQL用戶和用戶組

# groupadd? -r? mysql

#? useradd? -r -g? mysql? -s? /sbin/nologin? ? -M? mysql



四、預(yù)編譯


#? tar? -zxf? boost_1_59_0.tar.gz

#? tar? -zxf? mysql-5.7.11.tar.gz

#? mkdir -p /data/mysql

# cd mysql-5.7.11


# cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/data/mysql? \

-DSYSCONFDIR=/etc? \

-DMYSQL_USER=mysql \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DMYSQL_UNIX_ADDR=/tem/mysql.sock? \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DENABLE_DOWNLOADS=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_DEBUG=0 \

-DMYSQL_MAINTAINER_MODE=0 \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=../boost_1_59_0 \

-DWITH_SSL:STRING=bundled \

-DWITH_ZLIB:STRING=bundled



#################################################################################

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \        ? [MySQL安裝的根目錄]

-DMYSQL_DATADIR=/data/mysql \        ? ? ? ? ? ? ? ? [MySQL數(shù)據(jù)庫文件存放目錄]

-DSYSCONFDIR=/etc \                    [MySQL配置文件所在目錄]

-DMYSQL_USER=mysql \                ? ? ? [MySQL用戶名]

-DWITH_MYISAM_STORAGE_ENGINE=1 \           [MySQL的數(shù)據(jù)庫引擎]

-DWITH_INNOBASE_STORAGE_ENGINE=1 \         [MySQL的數(shù)據(jù)庫引擎]

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \         ? [MySQL的數(shù)據(jù)庫引擎]

-DWITH_MEMORY_STORAGE_ENGINE=1 \          [MySQL的數(shù)據(jù)庫引擎]

-DWITH_READLINE=1 \? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [MySQL的readline library]

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock\? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [MySQL的通訊目錄]

-DMYSQL_TCP_PORT=3306 \             ? ? ? ?  [MySQL的監(jiān)聽端口]

-DENABLED_LOCAL_INFILE=1 \            ? ? ? ?   [啟用加載本地?cái)?shù)據(jù)]

-DENABLE_DOWNLOADS=1 \               ? ? [編譯時(shí)允許自主下載相關(guān)文件]

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \               ? ? ? ? [使MySQL支持所有的擴(kuò)展字符]

-DDEFAULT_CHARSET=utf8 \                 [設(shè)置默認(rèn)字符集為utf8]

-DDEFAULT_COLLATION=utf8_general_ci \          ? [設(shè)置默認(rèn)字符校對(duì)]

-DWITH_DEBUG=0 \                     [禁用調(diào)試模式]

-DMYSQL_MAINTAINER_MODE=0 \

-DDOWNLOAD_BOOST=1 \                ? [允許在線更新boost庫]

-DWITH_BOOST=../boost_1_59_0 \? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [指定boost安裝路徑]

-DWITH_SSL:STRING=bundled \                [通訊時(shí)支持ssl協(xié)議]

-DWITH_ZLIB:STRING=bundled               ? [允許使用zlib library]

#######################################################################################


五院仿、編譯安裝

#? make -j? `grep processor /proc/cpuinfo | wc -l`

//編譯很消耗系統(tǒng)資源秸抚,小內(nèi)存可能編譯通不過

# make install

// 花費(fèi)時(shí)間會(huì)較長

如果中途編譯失敗了,需要?jiǎng)h除cmake生成的預(yù)編譯配置參數(shù)的緩存文件和make編譯后生成的文件歹垫,再重新編譯剥汤。

#? make? clean

# rm -rf? CMakeCache.txt


六、更改目錄權(quán)限


# chown? -R? mysql:mysql? ? /usr/local/mysql

# chown? -R? mysql:mysq? ? l/data/mysql



七排惨、設(shè)置啟動(dòng)腳本吭敢,開機(jī)自啟動(dòng)


# cp? /usr/local/mysql/support-files/mysql.server? ? /etc/init.d/mysqld

# vim? /etc/mysqld

basedir=/usr/local/mysql

datadir=/data/mysql

# chmod +x? /etc/init.d/mysqld

# chkconfig? ? --add? mysqld

# chkconfig mysqld? on



八,修改環(huán)境變量暮芭,添加庫文件路徑

# vim? /etc/profile

export? PATH=/usr/local/mysql/bin:$PATH

# source /etc/profile

# vim /etc/ld.so.conf

/usr/local/mysql/lib

# ldconfig


九鹿驼、自定義配置文件

/etc/my.cnf,僅供參考

cat > /etc/my.cnf << EOF

[client]

port = 3306

socket= /tmp/mysql.sock

default-character-set = utf8mb4

[mysqld]

port = 3306

socket= /tmp/mysql.sock

basedir = /usr/local/mysql

datadir = /data/mysql

pid-file= /data/mysql/mysql.pid

user= mysql

bind-address = 0.0.0.0

server-id= 1

init-connect = 'SET NAMES utf8mb4'

character-set-server = utf8mb4

#skip-name-resolve

#skip-networking

back_log = 300

max_connections = 1000

max_connect_errors = 6000

open_files_limit = 65535

table_open_cache = 128

max_allowed_packet = 4M

binlog_cache_size = 1M

max_heap_table_size = 8M

tmp_table_size = 16M

read_buffer_size = 2M

read_rnd_buffer_size = 8M

sort_buffer_size = 8M

join_buffer_size = 8M

key_buffer_size = 4M

thread_cache_size = 8

query_cache_type = 1

query_cache_size = 8M

query_cache_limit = 2M

ft_min_word_len = 4

log_bin = mysql-bin

binlog_format = mixed

expire_logs_days = 30

log_error = /data/mysql/mysql-error.log

slow_query_log = 1

long_query_time = 1

slow_query_log_file = /data/mysql/mysql-slow.log

performance_schema = 0

explicit_defaults_for_timestamp

#lower_case_table_names = 1

skip-external-locking

default_storage_engine = InnoDB

#default-storage-engine = MyISAM

innodb_file_per_table = 1

innodb_open_files = 500

innodb_buffer_pool_size = 64M

innodb_write_io_threads = 4

innodb_read_io_threads = 4

innodb_thread_concurrency = 0

innodb_purge_threads = 1

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 2M

innodb_log_file_size = 32M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

bulk_insert_buffer_size = 8M

myisam_sort_buffer_size = 8M

myisam_max_sort_file_size = 10G

myisam_repair_threads = 1

interactive_timeout = 28800

wait_timeout = 28800

[mysqldump]

quick

max_allowed_packet = 16M

[myisamchk]

key_buffer_size = 8M

sort_buffer_size = 8M

read_buffer = 4M

write_buffer = 4M

EOF


十辕宏、初始化數(shù)據(jù)庫


# /usr/local/mysql/bin/mysqld? --initialize-insecure? --user=mysql? --basedir=/usr/local/mysql? --datadir=/data/mysq

注:

MySQL之前版本mysql_install_db是在mysql_basedir/script下

MySQL 5.7直接放在了mysql_install_db/bin目錄下畜晰。

"–initialize"已廢棄,生成一個(gè)隨機(jī)密碼(~/.mysql_secret)

"--initialize-insecure "不會(huì)生成密碼

"–datadir"目錄下不能有數(shù)據(jù)文件



十一、啟動(dòng)數(shù)據(jù)庫


# systemctl start mysqld

# systemctl status mysqld

# systemctl enable mysqld


十二瑞筐、查看MySQL服務(wù)進(jìn)程和端口


# netstat? -pantu | grep 3306

# ps? -elf? | grep? mysqld



十三凄鼻、設(shè)置數(shù)據(jù)庫root用戶密碼


MySQL和Oracle數(shù)據(jù)庫一樣,數(shù)據(jù)庫也默認(rèn)自帶了一個(gè) root 用戶(這個(gè)和當(dāng)前Linux主機(jī)上的root用戶是完全不搭邊的)聚假,我們在設(shè)置好MySQL數(shù)據(jù)庫的安全配置后初始化root用戶的密碼野宜。配制過程中,一路輸入 y 就行了魔策。

這里只說明下MySQL5.7版本中匈子,用戶密碼策略分成低級(jí) LOW 、中等 MEDIUM 和超強(qiáng) STRONG 三種闯袒,推薦使用中等 MEDIUM 級(jí)別虎敦!

# mysql_secure_installation


十四、登錄數(shù)據(jù)路


# mysql? -u root? -h localhost -p


十五政敢、selinux 防火請(qǐng)?jiān)O(shè)置


selinux:

# sed-i"s/SELINUX=enforcing/SELINUX=disabled/"/etc/selinux/config

#setenforce 0

iptables:

# iptables -A INPUT? -m state --state NEW -m tcp? -p tcp --dport 3306 -j ACCEPT

# iptables-save

firewalld:

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

#?firewall-cmd --reload

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末其徙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喷户,更是在濱河造成了極大的恐慌唾那,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褪尝,死亡現(xiàn)場離奇詭異闹获,居然都是意外死亡期犬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門避诽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來龟虎,“玉大人,你說我怎么就攤上這事沙庐±鹜祝” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拱雏,是天一觀的道長棉安。 經(jīng)常有香客問我,道長铸抑,這世上最難降的妖魔是什么贡耽? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮羡滑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘算芯。我一直安慰自己柒昏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布熙揍。 她就那樣靜靜地躺著职祷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪届囚。 梳的紋絲不亂的頭發(fā)上有梆,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音意系,去河邊找鬼泥耀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蛔添,可吹牛的內(nèi)容都是我干的痰催。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼迎瞧,長吁一口氣:“原來是場噩夢啊……” “哼夸溶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凶硅,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤缝裁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后足绅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捷绑,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡韩脑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胎食。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扰才。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖厕怜,靈堂內(nèi)的尸體忽然破棺而出衩匣,到底是詐尸還是另有隱情,我是刑警寧澤粥航,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布琅捏,位于F島的核電站,受9級(jí)特大地震影響递雀,放射性物質(zhì)發(fā)生泄漏柄延。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一缀程、第九天 我趴在偏房一處隱蔽的房頂上張望搜吧。 院中可真熱鬧,春花似錦杨凑、人聲如沸滤奈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜒程。三九已至,卻和暖如春伺帘,著一層夾襖步出監(jiān)牢的瞬間昭躺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工伪嫁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留领炫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓张咳,卻偏偏與公主長得像驹吮,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晶伦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容