「學習筆記」無法遠程訪問 MySQL 碰到的坑

「學習筆記」無法遠程訪問 MySQL 碰到的坑

資源介紹參數
資源類別: 代碼筆記
如遇問題: 聯繫客服/留言反饋
釋放雙眼,帶上耳機,聽聽看~!

「學習筆記」無法遠程訪問 MySQL 碰到的坑

平台:ubutun
mysql版本:5.7 (重要)

最近寫Java的Demo項目碰巧需要開虛擬機測試。麻溜的裝了個 Mysql ,然後準備開開心心的用Navicat連庫開擼,沒想到,居然無法遠程訪問?WTF…之前用centos可是很愉快的啊。然後居然連續碰到了很多坑。
寫一篇筆記,記錄下踩坑的過程,我的情況不一定適用於所有人,請注意文章最開頭的系統和Mysql版本。

首先,本地登錄root完全沒問題。

mysql -uroot -p

然後在Windows用Navicat登錄Mysql的時候居然失敗了,"Can't connect to MySQL server on 'localhost' (10061)"?還不給詳細的報錯信息。

第一個想到的是嘗試在數據表中打開訪問的權限,以下一頓操作。

操作一:修改表訪問權限

參考鏈接:https://www.cnblogs.com/cnblogsfans/archive/2009/09/21/1570942.html

mysql預設root使用者沒有密碼,輸入mysql –u root 進入mysql

1、初始化root密碼

mysql>use mysql

進入mysql數據庫

mysql>update user set password=PASSWORD(‘123456’) where User='root';

2、允許mysql遠程訪問,可以使用以下三種方式:

3、改表。

mysql -u root –p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

b、授權。

例如,你想root使用123456從任何主機連接到mysql伺服器。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

如果你想允許使用者jack從ip為10.10.50.127的主機連接到mysql伺服器,並使用654321作為密碼

mysql>GRANT ALL PRIVILEGES ON *.* TO 'jack'@’10.10.50.127’ IDENTIFIED BY '654321' WITH GRANT OPTION;
mysql>FLUSH RIVILEGES

c、在安裝mysql的機器上運行:

//進入MySQL伺服器
d:mysqlbin>mysql -h localhost -u root
//賦予任何主機訪問數據的權限
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
//使修改生效
mysql>FLUSH PRIVILEGES
//登出MySQL伺服器
mysql>EXIT

但是一圈下來,沒卵用,繼續找解決方案。這時候突發奇想:

mysql -h 192.168.19.132 -uroot -p #失敗 報了:ERROR 2003 (HY000): Can't connect to MySQL server (111)

mysql -h localhost -uroot -p #可以

至此可以確定,是什麼東西擋住了遠程訪問,但不是表權限。

隨後看到了一篇stackoverflow的文章:

https://stackoverflow.com/questions/11758339/error-2003-hy000-cant-connect-to-mysql-server-111

我看到了一條命令:

netstat -nat |grep :3306

顯示了:

 tcp        0      0 127.0.0.1:3306            0.0.0.0:*               LISTEN 

OK,這才發現這mysql只監聽了127.0.0.1

操作二:開始解決ip監聽問題

mysql配置文件檢查

檢查my.cnf的配置,bind-address=addr可以配置綁定ip地址。
不配置或者IP配置為0.0.0.0,表示監聽所有客戶端連接。

注意(我踩了這個坑):mysql 5.7的目錄改成了/etc/mysql/mysql.conf.d/mysqld.cnf 而非之前的 /etc/mysql/mycnf

「學習筆記」無法遠程訪問 MySQL 碰到的坑

「學習筆記」無法遠程訪問 MySQL 碰到的坑

注釋掉 bind-address = 127.0.0.1

重啟(每個平台命令都不一樣):

/etc/init.d/mysql restart

點我檢視?各個平台的mysql重啟命令


至此,終於解決!一共兩個操作解決:

1.表權限
2.端口

參考到的所有文章

聲明:本文為原創作品,版權歸作者所有。未經許可,不得轉載或用於任何商業用途。如若本站內容侵犯了原著者的合法權益,可聯繫我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
2 條回復 A文章作者 M管理員
  1. yangbbs

    mysql其實來說 還是很容易的

    • 喵容站長

      一個前端默默踩坑中,不容易啊。[wb_二哈][wb_二哈][wb_二哈]