2010-02-23 4 views

ответ

35

Просто укажите IP/имя хоста удаленного компьютера в строке подключения к базе данных, а не localhost. Например:

jdbc:mysql://192.168.15.25:3306/yourdatabase 

Убедитесь, что нет брандмауэра блокирует доступ к порту 3306

Кроме того, убедитесь, что пользователь вы подключаетесь с разрешено подключением данного конкретного хоста. В средах разработки это безопасно сделать с помощью 'username'@'%'. Проверьте the user creation manual и GRANT manual.

+3

Также не забудьте предоставить соответствующие разрешения этому хосту и пользователю в вашей схеме MySQL. – duffymo

+2

@Angeline: Pls принимает этот ответ, так как это правильный ответ на заданный вопрос. –

+0

Также убедитесь, что: (1) IP-адрес вашего компьютера относится к числу тех IP-адресов, которые разрешено удаленно подключаться к серверу базы данных. (2) Имя вашей базы данных - как указано в URL-адресе - будет полным квалифицированным именем для этой базы данных.Поэтому, если фактическая база данных называется «web_shop», и она хранится на учетной записи хостинга «angelazza», то полное имя вашей базы данных - «angelazza_web_shop». – Trunk

7

Вам необходимо передать IP/hostname машины репота в строку подключения.

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 */ } 
      } 
     } 
    } 
} 
+0

Вместо локального хоста я заменил адрес удаленной машины. это код: 'String url =" jdbc: mysql: //172.18.227.237/struts2 "; conn = DriverManager.getConnection (url, "root", "admin") ';. Но теперь я получаю ошибку: 'com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: доступ запрещен для пользователя 'root'@'172.20.169.174' в базу данных 'struts2'. Я получил удаленный доступ к серверу mysql. – Angeline

+0

Немного поздно вечеринке с этим, но: замените «jdbc: mysql: //172.18.227.237/struts2» на «jdbc: mysql: //172.18.227.237: 3306/struts2» (обратите внимание на номер порта). В случае, если некоторые позади меня совершают ту же ошибку. – Kingsolmn

+0

Вы никогда, ни разу и никогда не сможете подключиться к удаленной машине с помощью localhost или 127.0.0.1. –

2

Кроме того, вы должны убедиться, что конфигурации сервера MySQL (в /etc/mysql/my.cnf,/и т.д./по умолчанию/MySQL на Debian) не имеет «пропуском сети» активируется и не переплетены исключительно к интерфейсу loopback (127.0.0.1), но также к интерфейсу/IP-адресу, к которому вы хотите подключиться.

+0

Не забудьте перезагрузить mysql на удаленном компьютере с помощью 'sudo /etc/init.d/mysql restart' после этого изменения. – cindyxiaoxiaoli

4

Чтобы получить доступ к базе данных с удаленной машины, вам необходимо предоставить все привилегии вам базы данных.

Для получения разрешений введите следующий скрипт: GRANT ALL PRIVILEGES ON . Пользователю @ '%' IDENTIFIED BY 'password';

0

в my.cnf файл, пожалуйста, измените следующие

## Вместо того, чтобы пропустить-сети по умолчанию теперь слушать только на ## Localhost, который более совместим и не является менее безопасным. ## связывать-адрес 127.0.0.1 =

1
  1. Создание нового пользователя в схеме 'MySQL' (mysql.user) Выполнить этот код в вашем рабочем пространстве тузд “GRANT ALL ON . to [email protected]'%'IDENTIFIED BY '';

  2. Открыть «3306» на машине, имеющей базу данных. 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. Попробуйте проверить с помощью телнет сообщ на ЦМД в том числе IP-DB сервера

+0

И пересылка порта, когда вы находитесь за NAT! – zerocool

+0

Я понял лучше со вторым ответом там: http://stackoverflow.com/questions/1700518/remote-mysql-database-access – Gurvan

1

Закрыть все соединения, который открыт & подключен к серверу прослушивать порт, то, что это из приложения или на стороне клиента (navicat) или на запущенном сервере (apache или weblogic). Сначала закройте все соединения, затем перезапустите все инструменты MySQL, apache и т. Д.