記一次Linux修改MySQL配置不生效的問題

2022-01-20 08:38:49 字數 2076 閱讀 9770

背景過程

在 stackoverflow上的高票回答很簡單,修改只需要三步就可以完成

/etc/my.cnf      // 找到配置檔案

port = 3306 // 修改內容

sudo service mysql restart // 重啟mysql

但實時並沒有那麼簡單,以上答案可能對舊版本管用,但是新版本你在/etc/my.cnf下根本找不到任何東西,檔案都不存在

然後我去查閱的官方文件,找到的配置檔案原來在目錄:/etc/mysql/my.cnf 下,但是不要覺得找到配置檔案就萬事大吉,當你開啟檔案你會看到畫風變了,因為配置檔案裡面沒有內容,而是引用了另外2個配置資料夾,/etc/mysql/my.cnf 具體內容是這樣的

!includedir /etc/mysql/conf.d/

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

可以,至少有線索了,順著路徑去找,在2個目錄下每個檔案都看了下,最後看到 mysql.conf.d/mysqld.cnf 似乎是我們要找的檔案(官方文件也驗證了這一點),開啟可以看到我們需要修改的檔案屬性

[mysqld]

prot = 3306

bind-address = 127.0.0.1 // 只允許本機訪問

改成我需要的的配置引數後,我以為事情到這裡就結束了,當我使用 sudo service mysql restart 重啟服務的時候,我發現我的內網機器還是訪問不了,我使用 netstat -ntlp 檢視 local address,foregin address,發現我修改的配置後的配置沒有生效,我陷入的深深的自我懷疑當中,彷彿線索在這裡中斷了

然後,有網友說提到說有可能是檔案許可權問題,如果檔案許可權過大(全域性可寫),mysql 會出現安全考慮不會讀取該配置檔案,而且讀取自身的配置副本檔案,我執行命令,如看如下警告

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

上面是指檔案由於全域性可寫存在風險,被mysql忽略,並且列出mysql讀取配置檔案的順序,這裡是可以看到mysql是存在多個my.cnf配置檔案,有些是全域性配置,有些是區域性配置,找到線索後,處理起來就簡單很多了,我們更改檔案許可權,再看看 mysql --help 就發現警告已經沒有了,具體命令如下:

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

然後再執行 sudo service mysql restart,然後再看看 local address 和 foreign address 已經變成我們在my.cnf配置的內容,但是修改後的配置已經成功生效,確認是檔案全域性可讀的安全問題導致

總結最後是關於 mysql 的安全規則導致修改配置不生效,當然這條規則,大部分情況下我們是不知道的(如果沒有完整閱讀官網文件的話),在經過這次問題,我大概有如下幾點總結,幫助大家在排查問題上少走彎路,盡快找到真實的問題:

遇到問題首先應該看官網的最新文件

檢視資料時間,網上很多資料時間太長,可能會誤導你

認真檢視警告資訊,熟練掌握排查工具和命令

基礎知識很重要,越是深的問題越考驗程式設計師的內功

記一次修改mysql密碼

直接上命令 首先vim etc my.cnf 在my.cnf檔案中,在 mysqld 的段中加上 skip grant tables 改完並儲存後退出,這時需要重啟mysql。因為我的mysql是5.7版本以上的,所以命令如下 bin systemctl restart mysqld.service...

mysql安裝一次 記一次mysql安裝

mysql 分為安裝版和壓縮版 2.安裝 2.1 解壓得到 mysql 8.0.15 winx64 資料夾 2.2 在mysql 8.0.15 winx64 資料夾下,新建配置檔案my.ini,內容 如下 mysqld 設定3306埠 port 3306 設定mysql的安裝目錄,這裡是唯一你需要改...

記一次CDH修改IP

因機房伺服器搬遷,需要修改cdh ip 集群中有6臺伺服器.其中配置了ldap,其中卡在了ldap中的坑太深,所以記錄一下.1.首先在安裝cloudera manager的主機上,停止所有的cloudera管理程序 service cloudera scm agent stop service cl...