一次Linux修改MySQL配置不生效的問題解決
背景
自己手上有一個(gè)項(xiàng)目服務(wù)用的是AWS EC2,最近從安全性和性能方面考慮,最近打算把騰訊云的MySQL數(shù)據(jù)庫遷移到AWS RDS上,因?yàn)锳WS的出口規(guī)則和安全組等問題,我需要修改默認(rèn)的3306端口和Bind Address限制特定的IP訪問,我在Stackoverflow上查詢了如何修改,但是網(wǎng)上的資料大多比較老舊,不符合目前主流的MySQL版本(使用的MySQL 5.7.27,操作系統(tǒng)使用Ubuntu 18.04.1 LTS)
過程
在 Stackoverflow上的高票回答很簡單,修改只需要三步就可以完成
/etc/my.cnf // 找到配置文件 port = 3306 // 修改內(nèi)容 sudo service mysql restart // 重啟MySQL
但實(shí)時(shí)并沒有那么簡單,以上答案可能對(duì)舊版本管用,但是新版本你在/etc/my.cnf下根本找不到任何東西,文件都不存在
然后我去查閱的官方文檔,找到的配置文件原來在目錄:/etc/mysql/my.cnf 下,但是不要覺得找到配置文件就萬事大吉,當(dāng)你打開文件你會(huì)看到畫風(fēng)變了,因?yàn)榕渲梦募锩鏇]有內(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)),打開可以看到我們需要修改的文件屬性
[mysqld] prot = 3306 bind-address = 127.0.0.1 // 只允許本機(jī)訪問
改成我需要的的配置參數(shù)后,我以為事情到這里就結(jié)束了,當(dāng)我使用 sudo service mysql restart 重啟服務(wù)的時(shí)候,我發(fā)現(xiàn)我的內(nèi)網(wǎng)機(jī)器還是訪問不了,我使用 netstat -ntlp 查看 Local Address,F(xiàn)oregin Address,發(fā)現(xiàn)我修改的配置后的配置沒有生效,我陷入的深深的自我懷疑當(dāng)中,仿佛線索在這里中斷了
然后,有網(wǎng)友說提到說有可能是文件權(quán)限問題,如果文件權(quán)限過大(全局可寫),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
上面是指文件由于全局可寫存在風(fēng)險(xiǎn),被MySQL忽略,并且列出MySQL讀取配置文件的順序,這里是可以看到MySQL是存在多個(gè)my.cnf配置文件,有些是全局配置,有些是局部配置,找到線索后,處理起來就簡單很多了,我們更改文件權(quán)限,再看看 mysql --help 就發(fā)現(xiàn)警告已經(jīng)沒有了,具體命令如下:
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)是文件全局可讀的安全問題導(dǎo)致
總結(jié)
最后是關(guān)于 MySQL 的安全規(guī)則導(dǎo)致修改配置不生效,當(dāng)然這條規(guī)則,大部分情況下我們是不知道的(如果沒有完整閱讀官網(wǎng)文檔的話),在經(jīng)過這次問題,我大概有如下幾點(diǎn)總結(jié),幫助大家在排查問題上少走彎路,盡快找到真實(shí)的問題:
- 遇到問題首先應(yīng)該看官網(wǎng)的最新文檔
- 查看資料時(shí)間,網(wǎng)上很多資料時(shí)間太長,可能會(huì)誤導(dǎo)你
- 認(rèn)真查看警告信息,熟練掌握排查工具和命令
- 基礎(chǔ)知識(shí)很重要,越是深的問題越考驗(yàn)程序員的內(nèi)功
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- linux下安裝apache與php;Apache+PHP+MySQL配置攻略
- mysql 5.7.13 安裝配置方法圖文教程(linux)
- Linux下MySQL安裝配置 MySQL配置參數(shù)詳解
- 最全的mysql 5.7.13 安裝配置方法圖文教程(linux) 強(qiáng)烈推薦!
- 查看linux服務(wù)器上mysql配置文件路徑的方法
- linux mysql5.6版本的安裝配置過程
- linux下指定mysql數(shù)據(jù)庫服務(wù)器主從同步的配置實(shí)例
- linux下apache、mysql、php安裝配置詳細(xì)筆記
- CentOS Linux 下配置Apache2+PHP5+MySQL5+GD庫的方法
- Linux虛擬機(jī)下mysql 5.7安裝配置方法圖文教程
相關(guān)文章
嵌入式Linux開發(fā)環(huán)境搭建ping、nfs的解決方法
在本篇文章里小編給大家整理了關(guān)于嵌入式Linux開發(fā)環(huán)境搭建ping、nfs的解決方法,需要的朋友們學(xué)習(xí)參考下。2019-07-07Apache防DDOS模塊mod_evasive安裝和配置方法詳解
這篇文章主要介紹了Apache防DDOS模塊mod_evasive安裝和配置方法,需要的朋友可以參考下2014-03-03Apache中解決動(dòng)態(tài)地址跳轉(zhuǎn)死循環(huán)的方法
這篇文章主要介紹了Apache中解決動(dòng)態(tài)地址跳轉(zhuǎn)死循環(huán)的方法,另外作者還提出了盡量使用偽靜態(tài)的建議,需要的朋友可以參考下2015-07-07Typecho程序偽靜態(tài)規(guī)則大全(包括Linux/Windows)
Typecho程序的偽靜態(tài)規(guī)則不同于wp直接默認(rèn)可用,需要我們手工加載到空間中才可以生效。下面老左整理了這款程序在不同的主機(jī)環(huán)境中的偽靜態(tài)規(guī)則,希望對(duì)大家有所幫助2012-09-09Linux VPS配置Web網(wǎng)站環(huán)境一鍵包(LNMP/LAMP/LNMPA)
如果我們是資深Linux用戶,可能不屑于網(wǎng)上免費(fèi)Linux Web一鍵包、管理面板的安裝,然后自己編譯或者自由的一套環(huán)境安裝配置環(huán)境。但是,對(duì)于大部分用戶而言,麥子個(gè)人建議還是選擇較為成熟的WEB一鍵包或者面板安裝環(huán)境2017-02-02