遠端連線 Mysql 失敗的解決方法
今天在虛擬機器Ubuntu上折騰了一晚上mysql,然後試著用java連線,搞了很久都沒成功,但是同學配好的Debian上卻連線成功了,也就是說我的配置有問題。
折騰了很久,最後還是透過理解異常資訊來大致猜測。
遠端連線是輸入mysql所在主機的IP和埠來確定主機的邏輯地址,再透過使用者和密碼來確定登入哪個使用者。比如:
String url = "jdbc:mysql://192.168.183.134:3306/mysql";
就是先在網路層連上IP為192.168.183.134的主機,再去連線這臺主機的具體埠3306(傳輸層),然後傳輸層達成連線後,在應用層用賬號密碼登陸,訪問mysql資料庫:
Connection conn = DriverManager.getConnection(url, user, password);
一開始我懷疑是否埠設定問題,然後在/etc/mysql/my.cnf上加上了port=3306,結果還是連不上,顯示埠拒絕訪問。
然後用 $netstat -apn 找到埠3306的一條資訊:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
仔細一看,這裡提供的IP是127.0.0.1,結合socket程式設計的經驗,一般要接收任意主機傳送的訊息時,IP會設定為0.0.0.0,而127.0.0.1(回送地址)是否意味著只能本地訪問?然後開啟同學的Debian檢視他的mysql佔用埠時,果然如我所想:
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
經過一番搜尋後,得出結論是mysql預設只提供給本地訪問,而要開啟遠端訪問功能需要額外設定。從安全的角度看這也是合理的。
設定方法還是修改配置檔案/etc/mysql/my.cnf
[client] default-character-set=utf8 [mysqld] default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci port=3306 bind-address=0.0.0.0
utf8相關的是之前本地錄入漢字資料時發現插入失敗,漢子和VARCHAR不相容,在mysql模式下輸入STATUS檢視的狀態時:
Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8
經過這個修改後,前2個字符集就全變成了utf8,支援中文。其他的修改就如同我所說的,繫結IP為0.0.0.0,即接收任意地址的主機的連線,埠繫結3306。
但是依然不能訪問,只不過錯誤資訊發生了改變,這次很明確了,是顯示使用者沒有連線許可權,也就是說使用者只能本地連線,依然搜尋資料後得出解決方案如下:
mysql> grant all on *.* to team@'%' identified by 'java123' with grant option; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'root'@'%' identified by 'cplusplus' with grant option; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
參考:配置mysql允許遠端連線的方法
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2994614/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遠端主機mysql連線失敗MySql
- 關於 SQLyog 遠端連線 Linux 系統的 MySQL 失敗的解決方法LinuxMySql
- navicat無法遠端連線mysql的解決方法MySql
- 解決:連線遠端redis服務失敗(在linux部署)RedisLinux
- VSCode 遠端連線失敗VSCode
- 資料庫遠端連線失敗資料庫
- mysql遠端連結失敗筆記MySql筆記
- linux配置mysql資料庫遠端連線失敗LinuxMySql資料庫
- 解決mysql不能遠端連線的問題MySql
- 資料庫連線失敗的原因及解決方法資料庫
- Dell伺服器遠端卡java連線失敗伺服器Java
- mysql遠端連線不上怎麼解決?MySql
- 無法遠端連線mysql怎麼解決MySql
- 無界滑鼠MOUSE WITHOUT BORDERS連線失敗解決方法
- windows 系統,遠端桌面連線超出連線數解決方法Windows
- 配置 MySQL 允許遠端連線的方法MySql
- 配置mysql允許遠端連線的方法MySql
- 遠端桌面連線失敗 批次管理雲伺服器伺服器
- 遠端連線MYSQLMySql
- 遠端連線mysql 授權方法教程MySql
- windows10系統下遠端桌面連線失敗客戶端無法建立與遠端計算機的連線如何解決Windows客戶端計算機
- 【常見的SQL Server連線失敗錯誤以及解決方法】SQLServer
- CF連線伺服器失敗怎麼回事 cf連線失敗解決辦法伺服器
- Kettle8.2連線Oracle資料庫失敗解決方法Oracle資料庫
- Kettle連線失敗Oracle提示 ora-12505 的解決方法Oracle
- MYSQL遠端連線配置MySql
- 配置 MySQL 遠端連線MySql
- MYSQL配置遠端連線MySql
- mysql遠端連線命令MySql
- win10連線遠端桌面失敗提示“出現身份驗證錯誤”怎麼解決Win10
- mysql(mariadb)啟動失敗解決方法MySql
- Windows遠端桌面連線失敗和無法複製貼上Windows
- CentOS環境下mysql遠端連線和問題解決CentOSMySql
- zblog應用中心連線失敗的解決方案
- MySQL資料庫遠端連線開啟方法MySql資料庫
- SQL Server 2005 不允許遠端連線解決方法SQLServer
- mysql開啟遠端連線MySql
- 命令列遠端連線mysql命令列MySql