Я пытаюсь создать приложение JSF с помощью Eclipse IDE. Я использую удаленный сервер mySQL в качестве моей базы данных. Как подключиться к этой удаленной базе данных для создания таблиц и их доступа?Как подключиться к удаленной базе данных mysql с помощью java?
ответ
Просто укажите IP/имя хоста удаленного компьютера в строке подключения к базе данных, а не localhost
. Например:
jdbc:mysql://192.168.15.25:3306/yourdatabase
Убедитесь, что нет брандмауэра блокирует доступ к порту 3306
Кроме того, убедитесь, что пользователь вы подключаетесь с разрешено подключением данного конкретного хоста. В средах разработки это безопасно сделать с помощью 'username'@'%'
. Проверьте the user creation manual и GRANT
manual.
Вам необходимо передать 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 */ }
}
}
}
}
Вместо локального хоста я заменил адрес удаленной машины. это код: '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
Немного поздно вечеринке с этим, но: замените «jdbc: mysql: //172.18.227.237/struts2» на «jdbc: mysql: //172.18.227.237: 3306/struts2» (обратите внимание на номер порта). В случае, если некоторые позади меня совершают ту же ошибку. – Kingsolmn
Вы никогда, ни разу и никогда не сможете подключиться к удаленной машине с помощью localhost или 127.0.0.1. –
Кроме того, вы должны убедиться, что конфигурации сервера MySQL (в /etc/mysql/my.cnf,/и т.д./по умолчанию/MySQL на Debian) не имеет «пропуском сети» активируется и не переплетены исключительно к интерфейсу loopback (127.0.0.1), но также к интерфейсу/IP-адресу, к которому вы хотите подключиться.
Не забудьте перезагрузить mysql на удаленном компьютере с помощью 'sudo /etc/init.d/mysql restart' после этого изменения. – cindyxiaoxiaoli
Чтобы получить доступ к базе данных с удаленной машины, вам необходимо предоставить все привилегии вам базы данных.
Для получения разрешений введите следующий скрипт: GRANT ALL PRIVILEGES ON . Пользователю @ '%' IDENTIFIED BY 'password';
в my.cnf файл, пожалуйста, измените следующие
## Вместо того, чтобы пропустить-сети по умолчанию теперь слушать только на ## Localhost, который более совместим и не является менее безопасным. ## связывать-адрес 127.0.0.1 =
Создание нового пользователя в схеме 'MySQL' (mysql.user) Выполнить этот код в вашем рабочем пространстве тузд
“GRANT ALL ON . to [email protected]'%'IDENTIFIED BY '';
Открыть «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 ->
Попробуйте проверить с помощью телнет сообщ на ЦМД в том числе IP-DB сервера
Закрыть все соединения, который открыт & подключен к серверу прослушивать порт, то, что это из приложения или на стороне клиента (navicat) или на запущенном сервере (apache или weblogic). Сначала закройте все соединения, затем перезапустите все инструменты MySQL, apache и т. Д.
Также не забудьте предоставить соответствующие разрешения этому хосту и пользователю в вашей схеме MySQL. – duffymo
@Angeline: Pls принимает этот ответ, так как это правильный ответ на заданный вопрос. –
Также убедитесь, что: (1) IP-адрес вашего компьютера относится к числу тех IP-адресов, которые разрешено удаленно подключаться к серверу базы данных. (2) Имя вашей базы данных - как указано в URL-адресе - будет полным квалифицированным именем для этой базы данных.Поэтому, если фактическая база данных называется «web_shop», и она хранится на учетной записи хостинга «angelazza», то полное имя вашей базы данных - «angelazza_web_shop». – Trunk