如何解決Linux修改MySQL配置不生效的問(wèn)題

這篇文章主要講解了“如何解決Linux修改MySQL配置不生效的問(wèn)題”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“如何解決Linux修改MySQL配置不生效的問(wèn)題”吧!

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁(yè)設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開(kāi)發(fā)技術(shù)和網(wǎng)頁(yè)設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)公司專(zhuān)業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)、電商門(mén)戶(hù)網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶(hù)體驗(yàn)的提升,我們力求做到極致!

背景

自己手上有一個(gè)項(xiàng)目服務(wù)用的是AWS EC2,最近從安全性和性能方面考慮,最近打算把騰訊云的MySQL數(shù)據(jù)庫(kù)遷移到AWS RDS上,因?yàn)锳WS的出口規(guī)則和安全組等問(wèn)題,我需要修改默認(rèn)的3306端口和Bind Address限制特定的IP訪問(wèn),我在Stackoverflow上查詢(xún)了如何修改,但是網(wǎng)上的資料大多比較老舊,不符合目前主流的MySQL版本(使用的MySQL 5.7.27,操作系統(tǒng)使用Ubuntu 18.04.1 LTS)

過(guò)程

在 Stackoverflow上的高票回答很簡(jiǎn)單,修改只需要三步就可以完成

/etc/my.cnf      // 找到配置文件
port = 3306     // 修改內(nèi)容
sudo service mysql restart      // 重啟MySQL

但實(shí)時(shí)并沒(méi)有那么簡(jiǎn)單,以上答案可能對(duì)舊版本管用,但是新版本你在/etc/my.cnf下根本找不到任何東西,文件都不存在

然后我去查閱的官方文檔,找到的配置文件原來(lái)在目錄:/etc/mysql/my.cnf 下,但是不要覺(jué)得找到配置文件就萬(wàn)事大吉,當(dāng)你打開(kāi)文件你會(huì)看到畫(huà)風(fēng)變了,因?yàn)榕渲梦募锩鏇](méi)有內(nèi)容,而是引用了另外2個(gè)配置文件夾,/etc/mysql/my.cnf 具體內(nèi)容是這樣的

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

可以,至少有線索了,順著路徑去找,在2個(gè)目錄下每個(gè)文件都看了下,最后看到 mysql.conf.d/mysqld.cnf 似乎是我們要找的文件(官方文檔也驗(yàn)證了這一點(diǎn)),打開(kāi)可以看到我們需要修改的文件屬性

[mysqld]
prot = 3306
bind-address = 127.0.0.1        // 只允許本機(jī)訪問(wèn)

改成我需要的的配置參數(shù)后,我以為事情到這里就結(jié)束了,當(dāng)我使用 sudo service mysql restart 重啟服務(wù)的時(shí)候,我發(fā)現(xiàn)我的內(nèi)網(wǎng)機(jī)器還是訪問(wèn)不了,我使用 netstat -ntlp 查看 Local Address,F(xiàn)oregin Address,發(fā)現(xiàn)我修改的配置后的配置沒(méi)有生效,我陷入的深深的自我懷疑當(dāng)中,仿佛線索在這里中斷了

然后,有網(wǎng)友說(shuō)提到說(shuō)有可能是文件權(quán)限問(wèn)題,如果文件權(quán)限過(guò)大(全局可寫(xiě)),MySQL 會(huì)出現(xiàn)安全考慮不會(huì)讀取該配置文件,而且讀取自身的配置副本文件,我執(zhí)行命令,如看如下警告

mysql --help | grep my.cnf
mysql: [Warning] World-writable config file '/etc/mysql/mysql.conf.d/mysqld.cnf' 
is ignored.
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

上面是指文件由于全局可寫(xiě)存在風(fēng)險(xiǎn),被MySQL忽略,并且列出MySQL讀取配置文件的順序,這里是可以看到MySQL是存在多個(gè)my.cnf配置文件,有些是全局配置,有些是局部配置,找到線索后,處理起來(lái)就簡(jiǎn)單很多了,我們更改文件權(quán)限,再看看 mysql --help 就發(fā)現(xiàn)警告已經(jīng)沒(méi)有了,具體命令如下:

sudo chmod 644 /etc/mysql/mysql.conf.d/mysqld.cnf
mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

然后再執(zhí)行 sudo service mysql restart,然后再看看 Local Address 和 Foreign Address 已經(jīng)變成我們?cè)趍y.cnf配置的內(nèi)容,但是修改后的配置已經(jīng)成功生效,確認(rèn)是文件全局可讀的安全問(wèn)題導(dǎo)致

總結(jié)

最后是關(guān)于 MySQL 的安全規(guī)則導(dǎo)致修改配置不生效,當(dāng)然這條規(guī)則,大部分情況下我們是不知道的(如果沒(méi)有完整閱讀官網(wǎng)文檔的話),在經(jīng)過(guò)這次問(wèn)題,我大概有如下幾點(diǎn)總結(jié),幫助大家在排查問(wèn)題上少走彎路,盡快找到真實(shí)的問(wèn)題:

  1. 遇到問(wèn)題首先應(yīng)該看官網(wǎng)的最新文檔

  2. 查看資料時(shí)間,網(wǎng)上很多資料時(shí)間太長(zhǎng),可能會(huì)誤導(dǎo)你

  3. 認(rèn)真查看警告信息,熟練掌握排查工具和命令

  4. 基礎(chǔ)知識(shí)很重要,越是深的問(wèn)題越考驗(yàn)程序員的內(nèi)功

感謝各位的閱讀,以上就是“如何解決Linux修改MySQL配置不生效的問(wèn)題”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)如何解決Linux修改MySQL配置不生效的問(wèn)題這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

文章名稱(chēng):如何解決Linux修改MySQL配置不生效的問(wèn)題
本文來(lái)源:http://muchs.cn/article34/jchdpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃Google、用戶(hù)體驗(yàn)App設(shè)計(jì)電子商務(wù)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司