I am trying to create a JSF application using the Eclipse IDE. I am using a remote mySQL server as my database. How do I connect to this remote database for creating tables and accessing them?
9 Answers
Just supply the IP / hostname of the remote machine in your database connection string, instead of localhost. For example:
jdbc:mysql://192.168.15.25:3306/yourdatabase
Make sure there is no firewall blocking the access to port 3306
Also, make sure the user you are connecting with is allowed to connect from this particular hostname. For development environments it is safe to do this by 'username'@'%'. Check the user creation manual and the GRANT manual.
4 Comments
You need to pass IP/hostname of the rempote machine in the connection string.
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 */ }
}
}
}
}
3 Comments
String url = "jdbc:mysql://172.18.227.237/struts2"; conn = DriverManager.getConnection(url,"root","admin");. But Now I get the error, `com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Access denied for user 'root'@'172.20.169.174' to database 'struts2'. I have obtained remote access to the mysql server.Plus, you should make sure the MySQL server's config (/etc/mysql/my.cnf, /etc/default/mysql on Debian) doesn't have "skip-networking" activated and is not binded exclusively to the loopback interface (127.0.0.1) but also to the interface/IP address you want connect to.
1 Comment
sudo /etc/init.d/mysql restart after this change.Create a new user in the schema ‘mysql’ (mysql.user) Run this code in your mysql work space
“GRANT ALL ON . to user@'%'IDENTIFIED BY '';Open the ‘3306’ port at the machine which is having the Data Base.
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 ->Try to check by a telnet msg on cmd including DB server's IP
2 Comments
Change the IP / hostname of the vps in your database connection string, instead of localhost. For example if my IP is 193.23.127.130:
jdbc:mysql://193.23.127.130:3306/yourdatabase
then make sure your vps firewall allow port 3306 for MySQL.
Then go to MySQL workbench, Server–Users and Privileges, create an account (in this case account: remoteUser, password:password), make sure Limit to Hosts Matching is % (means you can access from any other IP)

Then set password and grant rights then apply

then you can add the following code in Java to access remotely
Connection connection = DriverManager.getConnection("jdbc:mysql://193.23.127.130:3306/swing_demo", "remoteUser", "password");