平台: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
注釋掉 bind-address = 127.0.0.1
重啟(每個平台命令都不一樣):
/etc/init.d/mysql restart
點我檢視?各個平台的mysql重啟命令
至此,終於解決!一共兩個操作解決:
1.表權限
2.端口
參考到的所有文章
- 遠程登錄mysql踩坑
- ERROR 2003 (HY000): Can’t connect to MySQL server (111)
- Mysql初始化root密碼和允許遠程訪問
- 各個平台的mysql重啟命令
mysql其實來說 還是很容易的
一個前端默默踩坑中,不容易啊。[wb_二哈][wb_二哈][wb_二哈]