Soru Java ile uzak bir mysql veritabanına nasıl bağlanır?


Eclipse IDE kullanarak bir JSF uygulaması oluşturmaya çalışıyorum. Uzak bir mySQL sunucumu veritabanım olarak kullanıyorum. Tablo oluşturmak ve bunlara erişmek için bu uzak veritabanına nasıl bağlanırım?


25
2018-02-23 12:59


Menşei




Cevaplar:


Bunun yerine, uzak makinenin IP / ana bilgisayar adını veritabanı bağlantı dizenize sağlayın. localhost. Örneğin:

jdbc:mysql://192.168.15.25:3306/yourdatabase

Bağlantı noktasına erişimi engelleyen güvenlik duvarı olmadığından emin olun. 3306

Ayrıca, bağlandığınız kullanıcının bu ana bilgisayar adından bağlandığından emin olun. Geliştirme ortamları için bunu yapmak güvenlidir. 'username'@'%'. Kontrol kullanıcı oluşturma kılavuzu ve GRANT Manuel.


37
2018-02-23 13:01



Ayrıca, MySQL şemanızdaki ana makine ve kullanıcı için uygun izinleri GRANT olarak kullandığınızdan emin olun. - duffymo
@Angeline: Pls bu cevabı kabul etti, çünkü bu sorulan soru için doğru cevaptı - Surya Chandra
Ayrıca şunlardan da emin olun: (1) PC'nizin IP adresi, veritabanı sunucunuza uzaktan bağlanmasına izin verilen IP'lerden biridir. (2) Veritabanınızın adı - URL'de belirtildiği gibi - bu veritabanı için tam nitelikli isim olacaktır. Eğer gerçek veritabanı 'web_shop' olarak adlandırılırsa ve 'angelazza' denilen bir hosting hesabında tutulursa, veritabanınızın tam nitelikli adı 'angelazza_web_shop' olur. - Trunk
Ve (3) Veritabanı sunucusuna yüklenen bir .sql dosyası içindeki tüm referansları (DB'yi çevrimdışı oluşturduğunuzu ve sunucuya yükleyip / yapıştırdığınızı varsayarak) 'web_shop' dan 'angelazza_web_shop' 'a kadar hatalardan kaçınmak için değiştirin. - Trunk


Bağlantı dizesindeki rempote makinenin IP / host adını geçmeniz gerekir.

import java.sql.*;
import javax.sql.*;

public class Connect
{
   public static void main (String[] args)
   {
       Connection conn = null;

       try
       {

           String url = "jdbc:mysql://localhost:3306/mydb";
           Class.forName ("com.mysql.jdbc.Driver");
           conn = DriverManager.getConnection (url,"root"," ");
           System.out.println ("Database connection established");
       }
       catch (Exception e)
       {
           e.printStackTrace();

       }
       finally
       {
           if (conn != null)
           {
               try
               {
                   conn.close ();
                   System.out.println ("Database connection terminated");
               }
               catch (Exception e) { /* ignore close errors */ }
           }
       }
   }
}

8
2018-02-23 17:07



Yerel makine yerine uzak makinenin adresini değiştirdim. Bu kod: String url = "jdbc:mysql://172.18.227.237/struts2"; conn = DriverManager.getConnection(url,"root","admin");. Ama şimdi hata alıyorum, 'com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:' root'@'172.20.169.174 'kullanıcısı için' struts2 'veritabanına erişim reddedildi. Mysql sunucusuna uzaktan erişim sağladım. - Angeline
Bununla partiye biraz geç, ama: "jdbc: mysql: //172.18.227.237/struts2" yerine "jdbc: mysql: //172.18.227.237: 3306 / struts2" ile değiştirin (bağlantı noktası numarasını not edin). Arkamda bazılarının aynı hata yapması durumunda. - Kingsolmn
Herhangi bir amaç ya da nedenden ötürü asla, yerel bir sunucu ya da 127.0.0.1 kullanarak uzak bir makineye bağlanamayacaksınız. - Rodney P. Barbati


uzak makineden veritabanına erişmek için, size veri tabanına tüm ayrıcalıkları vermeniz gerekir.

izin vermek için aşağıdaki komut dosyasını çalıştırın: AÇIK TÜM PRIVILEGELER . 'Parola' ile '%' kullanıcı kimliğine;


4
2018-03-12 06:16





Ayrıca, MySQL sunucusunun yapılandırmasının (Debian üzerindeki /etc/mysql/my.cnf, / etc / default / mysql) "atla-ağa" bağlanmadığından ve yalnızca geri döngü arabirimine bağlanmadığından emin olmalısınız (127.0 .0.1) ama aynı zamanda bağlanmak istediğiniz arayüz / IP adresine.


2
2018-02-23 17:53



Uzak makinedeki mysql'i yeniden başlatmayı unutmayın. sudo /etc/init.d/mysql restart bu değişiklikten sonra. - cindyxiaoxiaoli


  1. Şema "mysql" (mysql.user) 'de yeni bir kullanıcı oluştur Bu kodu mysql çalışma alanınızda çalıştır “GRANT ALL ON . to user@'%'IDENTIFIED BY '';

  2. Veri Tabanı olan makinede ‘3306’ portunu açın. Control Panel -> Windows Firewall -> Advance Settings -> Inbound Rules -> New Rule -> Port -> Next -> TCP & set port as 3306 -> Next -> Next -> Next -> Fill Name and Description -> Finish ->

  3. DB sunucusunun IP'si de dahil olmak üzere cmd üzerindeki telnet msg ile kontrol etmeye çalışın


1
2017-10-13 09:50



Ve NAT'ın arkasındayken port yönlendirme! - zerocool
Orada 2. Cevap ile daha iyi anladım: stackoverflow.com/questions/1700518/... - Gurvan


Uygulama veya istemci tarafı aracından (navicat) veya çalışan sunucudan (apache veya weblogic) ne olursa olsun, sunucu dinleme bağlantı noktasına açık ve bağlı olan tüm bağlantıları kapatın. İlk önce tüm bağlantıyı kapatın ve tüm araçları yeniden başlatın MySQL, apache vs.


1
2017-07-08 07:43





my.cnf dosyasında lütfen aşağıdakileri değiştirin

## Atlama ağı yerine, varsayılan sadece şimdi dinlenecek  Daha uyumlu ve daha az güvenli olmayan ## localhost.  ## bind-address = 127.0.0.1


0
2017-12-06 05:47