2013年5月23日 星期四

[Java] com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

使用兩台主機,一台為MySQL Server,而另一台則是使用java撰寫的程式,要利用jdbc 連線到Mysql時,發生了com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure的問題,從網路查到的資料,發現這個訊息可能的問題有好幾種,不過主要原因都是因為MySQL為了安全性的部分,所做的一些策略,而所導致。

由網路上得知:
1. 只有本機才能使用root登入
2. 若需要遠端連線,須開啟User遠端連線的權限

方法:

  • 登入MySQL
  • #mysql -h localhost -u root -p #登入MySQL

  • 建立帳號
  • 語法 :
    create user '[username]'@'[remote_ip]' identified by '[password]';
    grant all on *.* to '[username]'@'[remote_ip]';

    [username] : 帳號
    [password] : 密碼
    [remote_ip] : 遠端連到MySQL的IP,若不指定則填"%"

    mysql>create user 'jesse'@'%' identified by '1234';
    mysql>grant all on *.* to 'jesse'@'%';

  • 修改Mysql config
  • 編輯 /etc/mysql/my.cnf,並註解兩個Option。

    #skip-networking
    #bind-address = 127.0.0.1

  • 測試可否連線
  • 使用另一台主機,使用mysq指令,確認是否可連線成功。

    #mysql -h 192.168.11.200 -u root -p #登入MySQL

    沒有留言:

    張貼留言