1. 程式人生 > >設定mysql允許外部IP連線的解決方法及遇到的坑說明

設定mysql允許外部IP連線的解決方法及遇到的坑說明

昨天要打包了一個springboot的docker映象,在啟動映象的時候,報連不上資料庫。

檢視springboot工程裡面資料庫連線的配置,發現連線的ip是localhost。

心想在容器內部訪問的localhost跟宿主機的localhost應該是不一樣的,於是ifconfig查了本地的ip。然後在本機用真實ip去連線資料庫居然連不上。

用命令查詢埠情況:netstat -an | grep LISTEN


發現mysql用到3306這個埠,只能被127.0.0.1訪問0.0.0.0的就是每個IP都有的服務,寫明哪個IP的就是繫結那個IP的服務

網上查了一下預設情況下mysql只允許本地進入設定,如果需要外部IP連線到mysql,需要向mysql資料庫裡的“user”表裡新增相關授權。 

具體步驟: 

1.授權
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%′ IDENTIFIED 
BY ‘newpwd’ WITH GRANT OPTION; 

2.重新整理許可權使其生效
mysql>flush privileges; 


之後去到user表查詢已經有相關結果



3.去修改mysql配置檔案。編輯my.cnf檔案,註釋掉bind-address           = 127.0.0.1

本人是用Mac,一開始裝過mysql,後來重灌過,用homebrew重灌的,具體可看點選開啟連結

去查詢my.cnf的時候發現在/etc/my.cnf 有,開啟檔案裡面沒有“bind-address           = 127.0.0.1”這一行,這時發現這個檔案是之前解除安裝的時候沒有刪除乾淨的。那麼my.cnf究竟在哪裡呢?

可以檢視mysql的配置檔案啟動列表

mysqld --help --verbose | less

按著這個順序,我在/usr/local/etc/my.cof 找到了,註釋掉bind-address           = 127.0.0.1 即可

4.重啟mysql。

重啟之後再檢查一下mysql是否對外開放埠

netstat -an|grep 3306

搞定!!