【MySQL】CentOS7.x MySQL5.7 glibc版本的安裝

網(wǎng)上已經(jīng)有那么多的關(guān)于CentOS 7如何安裝MySQL的文章了, 為什么還要寫這沒一篇關(guān)于CentOS 7安裝MySQL的文章呢?

主要有以下幾個原因:

網(wǎng)上很多都是在線安裝,很多時候,在生產(chǎn)環(huán)境進(jìn)行部署時,生產(chǎn)機(jī)器都是不可能直接連公網(wǎng)的,導(dǎo)致網(wǎng)上很多的文章沒有借鑒意義

網(wǎng)上很多文章都比較舊,安裝的MySQL版本也比較舊,沒有進(jìn)行更新,導(dǎo)致很多步驟在新的MySQL版本安裝上不適用

網(wǎng)上很多文章本身就是錯的,很容易誤導(dǎo)讀者;

為了總結(jié)一篇實用的,不誤導(dǎo)大家的文章,也讓搜索到我這篇文章的讀者們不用再浪費時間去搜索別的安裝教程,節(jié)省大家的時間,所以抽點時間把如何在CentOS 7下離線安裝MySQL的步驟進(jìn)行詳細(xì)的總結(jié),為大家圖個方便,也為自己做個筆記和總結(jié)。

對于MySQL的數(shù)據(jù)庫的安裝,我們有很多種選擇來完成,而最為常用的為二進(jìn)制安裝以及源碼安裝,二進(jìn)制安裝方式中,包括rpm版本以及glibc版本。

rpm版本就是在特定linux版本下編譯的,如果你的linux版本匹配,就可以安裝,如針對RedHat6或者RedHat7編譯好的rpm包,下載對應(yīng)的安裝即可。另外一種二進(jìn)制安裝包為基于特定的glibc版本編譯的,本文主要描述基于glibc方式安裝MySQL。

一、實驗環(huán)境

操作系統(tǒng):? CentOS 7.5 Minimal

MySQL:? ? 192.168.1.106

二、安裝包下載

官方站點:https://downloads.mysql.com/archives/community



三、卸載相關(guān)沖突包

# rpm? -qa | grep mysql | xargs rpm -e --nodeps? ? ?> /dev/null? 2>&1

# rpm? -qa | grep mariadb | xargs rpm -e --nodeps? > /dev/null? 2>&1

四、檢查依賴

# rpm -qa | grep??libaio

# rpm -qa | grep glibc

# yum? -y install libaio glibc?

注:要求Linux系統(tǒng)的glibc版本要比2.12新,可以使用ldd --version查看glibc版本。


#? ldd --version




五、檢查虛擬機(jī)內(nèi)存

檢查系統(tǒng)的虛擬內(nèi)存大小,如果內(nèi)存不足 1G,啟動 mysql 的時候可能會產(chǎn)生下面這個錯誤提示:

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]

網(wǎng)上各種找解決方案,大部分都是什么文件權(quán)限、mysql 日志太大,重裝等問題,然而沒用!

內(nèi)存設(shè)置過小,耗費大量的精力和時間去調(diào)試始終也啟動沒成功。



六、selinux和防火墻設(shè)置

# setenforce 0

# sed? -i? 's/^SELINUX=.*/SELINUX=permissive/g'? /etc/selinux/config

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

#?firewall-cmd --reload

七、創(chuàng)建MySQL用戶和用戶組

# groupadd? -r? mysql

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

八、安裝MySQL

# tar -xf?mysql-5.7.24-linux-glibc2.12-x86_64.tar?

# tar? -zxf?mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz? -C /usr/local

# cd? /usr/local

# mv? mysql-5.7.24-linux-glibc2.12-x86_64/? ? mysql

初始化數(shù)據(jù)庫

方式一、以“安全模式”初始化

# mdkir -p /opt/data/mysql

# chown -R mysql:mysql /opt/data/mysql

# mysqld? - -initialize? ?--datadir=/opt/data/mysql? ?--user=mysql

數(shù)據(jù)庫初始化時,無需配置文件 my.cnf,啟動mysql時才需my.cnf

如果數(shù)據(jù)初始化時,有my.cnf,默認(rèn)讀取my.cnf,但是相關(guān)文件中相關(guān)目錄,文件權(quán)限需要提前創(chuàng)建和配置,此時初始化臨時密碼不會打印在控制,而是在指定的日志文件中!

方式二、以?“非安全模式”初始化

#?mysqld? ?--initialize? ?--basedir=/usr/local/mysql? ? --datadir=/opt/data/mysql? ?--user=mysql?

用這種方式此時,my.cnf應(yīng)該在初始化之后,啟動數(shù)據(jù)庫之前生成,也就是說初始化時,不用從/etc/my.cnf中讀取任何東西!

1. 初始化為數(shù)據(jù)庫

2. 生成 my.cnf

3. 啟動MySQL



# touch? /var/log/mysqld.log

# chown mysql:mysql? /var/log/mysqld.log


默認(rèn)mysql初始化時,無需在mysqld.log,初始化密碼會打印在控制臺。

啟動mysql時,會自動生成,默認(rèn)路徑是/var/log/mysqld/log,但如果初始化時在my.cnf中執(zhí)行此文件,那么需要提前創(chuàng)建和更改相關(guān)權(quán)限!


# cat? /etc/my.cnf

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

[client]

port=3306

socket=/var/lib/mysql/mysql.sock

[mysqld]

user=mysql

basedir=/usr/local/mysql?

datadir=/opt/data/mysql

socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

innodb_buffer_pool_size = 2G

innodb_log_file_size = 512M

innodb_flush_log_at_trx_commit = 1

innodb_flush_method = O_DIRECT

innodb_file_per_table=1

query_cache_type = 0

skip_name_resolve

log-bin=master-bin

binlog_format= ROW

max_connections = 1000

server_id=100

port=3306

sync_binlog=0

log_bin_trust_function_creators = 1

log_queries_not_using_indexes

slow_query_log=0

long_query_time=1

validate_password_check_user_name=on

plugin-load-add=validate_password.so

plugin-load-add=semisync_master.so

plugin-load-add=semisync_slave.so

loose_rpl_semi_sync_master_enabled = 1

loose_rpl_semi_sync_slave_enabled = 1

loose_rpl_semi_sync_master_timeout = 1000

validate-password=FORCE_PLUS_PERMANENT

validate_password_length=8

validate_password_policy=0

lower_case_table_names=1

gtid_mode= on

enforce_gtid_consistency

slave-parallel-type=LOGICAL_CLOCK

slave-parallel-workers=16

max_allowed_packet=256M

innodb_monitor_enable=all

character_set_server=utf8

local_infile=0

skip-symbolic-links=1

master_info_repository=table

relay-log-info-repository=table

relay_log_recovery=ON

sql-mode="ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_ALL_TABLES"

wait_timeout=300

interactive_timeout=300

expire_logs_days=7

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

# cd mysql?

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

# sed -i? 's#^basedir=#basedir=/usr/local/mysql#g'?? /etc/init.d/mysqld

# sed -i? 's#^datadir=#datadir=/opt/data/mysql#g'? ? ?/etc/init.d/mysqld?


此處basedir="" 和 datadir=""如果不設(shè)置,那么從my.cnf中讀取,如果my.cnf中設(shè)置了,此處無需再設(shè)置!

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

#?chkconfig?--add?mysqld

#?chkconfig? mysqld? on?

# systemctl start? mysqld

# systemctl enable? mysqld

# sytemctl status? mysqld


# mkdir /var/lib/mysql

#??chown? -R mysql:mysql? ?/var/lib/mysql


如果不在my.cnf中指定,那么啟動mysql的socket文件mysql.sock默認(rèn)生成在在/tmp目錄下

我們在my.cnf中指定 socket=/var/lib/mysql/mysql.sock,那么需要提前創(chuàng)建相關(guān)目錄,更改相關(guān)權(quán)限。

# mkdir /var/run/mysqld

#?chown -R mysql:mysql /var/run/mysqld



如果my.cnf不指定pid文件路徑,那么為 ${datadir}/主機(jī)名.pid

如果在my.cnf中指定了,那么需要提前創(chuàng)建相關(guān)路徑,更改相關(guān)權(quán)限。

# ln -s /var/lib/mysql/mysql.sock? /tmp/


# mysql? ?-u root? -p"lJe;w85Oqg6d"


mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '設(shè)置的新密碼';


# mysql -u root -p"MySQL@123"



九、參考

CentOS 7離線安裝MySQL 5.7

https://www.jellythink.com/archives/14

Linux 系統(tǒng)安裝下安裝 MySQL5.7(glibc版)

https://www.cnblogs.com/zero-gg/p/8875598.html

MySQL5.7安裝與配置

http://www.lxweimin.com/p/c504c655885d?tdsourcetag=s_pcqq_aiomsg

The world's most popular open source database?

https://dev.mysql.com

A Quick Guide to Using the MySQL Yum Repository

https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

Installing MySQL on Linux Using the MySQL Yum Repository

https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

CentOS Linux 7離線安裝MySQL 5.7.x

https://zhuanlan.zhihu.com/p/34719781

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,755評論 2 371

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