url de mi base de datos MySQL

Iniciado por alki, 1 Noviembre 2009, 14:01 PM

0 Miembros y 1 Visitante están viendo este tema.

alki

Buenas a todos!!

Tengo acceso shell a mi servidor con CentOS. Tengo instalado MySQL en la maquina, y tengo un programita en java y quiero que acceda a una de las bases de datos. El problema es que me dice que no se ha podido establecer conexion.
Me imagino que es por la url que le estoy poniendo.

He probado todas las combinaciones que se me han ocurrido y nada.

¿Alguien sabe de que modo podria averiguar cual es la url de la base de datos?

Tambien me he planteado que el programa estuviese mal. Me he descargado un pack de MySQL que trae entre otros MySQL Administrator, y tampoco he podido conectarme con la base de datos.


Muchas gracias.

Un Saludo

^Tifa^

Si tienes acceso Shell remoto a tu Centos (EL cual posee la base de datos) podrias utilizar como host hacia tu MySQL la IP o nombre de dominio que utilizas para conectarte remoto via shell a ese Centos????

alki

Hola.

Gracias por la respuesta :)

Mismo error haciendolo con la ip del server:
java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.SocketException: java.net.ConnectException: Connection refused

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:143)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:225)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1805)
        at com.mysql.jdbc.Connection.<init>(Connection.java:452)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at GestorBBDD.conectar(GestorBBDD.java:26)
        at GestorBBDD.main(GestorBBDD.java:58)


** END NESTED EXCEPTION **


        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1875)
        at com.mysql.jdbc.Connection.<init>(Connection.java:452)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at GestorBBDD.conectar(GestorBBDD.java:26)
        at GestorBBDD.main(GestorBBDD.java:58)
Excepcion 2

:-\

Un Saludo

^Tifa^

CitarConnection refused

Interesante  :P

1 - Estas intentando conectarte con el usuario 'root' de MySQL de forma remota?
2 - Cuando accesas por ssh a Centos, haz intentando una vez logueado en Centos abrir una conexión a MySQL (Dentro de Centos) con el mismo usuario con el cual intentas conectarte remoto... eres capaz de acceder a MySQL conectado por SSH ?


alki

Hola :)

He probado en el codigo con el administrador de mysql y con el usuario propio que le asigne a la base de datos y nada.

He probado desde el shell lo siguiente:
mysql -h localhost -u user -ppassword

Y me deja conectarme, una vez dentro puedo hacer use db; que tambien me deja, osea que puedo conectarme y encuentra la base de datos...

En respuesta a 1. El programa java, lo ejecuto en el mismo sistema donde se encuentra la base de datos.

Puedo acceder a mysql desde el shell.. como admin y como el user asignado a la db.

Muchas gracias.

Un Saludo

braulio--

Pues si lo ejecutas desde CentOS porque no le pasas la dirección localhost?

alki

Hola.

Le he pasado tmb localhost/db
Pero me muestra el mismo mensaje. He probado todo lo que se me podia ocurrir :S

Un Saludo

rob1104

Hola, coloca el codigo de java donde estableces la conexion, estoy seguro que el problema esta ahi.

Saludos
Sin análisis de requisitos o sin diseño, programar es el arte de crear errores en un documento de texto vacío.

alki

Hola

Código (java) [Seleccionar]
public class GestorBBDD {

        public static Connection conectar() throws ClassNotFoundException, SQLException{

                try {

                        Class.forName("com.mysql.jdbc.Driver");
                        Connection c = DriverManager.getConnection("jdbc:mysql://localhost/db","user","pass");
                        System.out.println("Conexión realizada");
                        return c;

                } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                        throw e;
                } catch (SQLException e) {
                        e.printStackTrace();
                        throw e;

                }

        }


        public static void desconectar(Connection c) throws SQLException{

                try {
                        c.close();
                } catch (SQLException e) {
                        e.printStackTrace();
                        throw e;
                }

        }

        /* Programa de prueba  */
                public static void main(String[] args) {
                try{
                        conectar();
}catch (ClassNotFoundException e) {
                        System.out.println("Excepcion 1");
                } catch (SQLException e) {
                        System.out.println("Excepcion 2");

                }
                }
}



Un Saludo

^Tifa^

Perfecto vamos avanzando  :-*

No se nada sobre Java, por ende no puedo adjudicar si tu codigo es del problema o esta bien o este mal. Me baso en la situacion que dijiste que utilizando otras aplicaciones te ocurre lo mismo al querer conectarte a MySQL:

'Conection refused'

:P

Sin embargo te permite conectarte plenamente mediante el cliente local 'mysql' pero no te deja conectarte mediante ninguna aplicacion de terceros.... mas interesante aun  :rolleyes:

Ya que tienes acceso a ese Centos (No se hasta que nivel tienes acceso a sus archivos), pero podrias verificar si el puerto 3306 (el default de MySQL) esta abierto? Se que puede sonar tonto, pero MySQL en sistemas Linux/Unix tiene 2 maneras de ejecutarse, mediante puerto TCP/IP y mediante Sockets. Las ultimas versiones de MySQL vienen a ejecutarse mediante Sockets y no por puerto TCP/IP evitando que aplicaciones de terceros no se puedan conectar porque solicitan el puerto 3306 abierto (Aunque no digo 100% que este sea tu problema, sino una posibilidad).

Verifica con el comando el siguiente comando si el puerto 3306 esta abierto:

bash$ netstat -tunap | grep 3306

Sino te sale nada, bueno podemos asumir que a lo mejor lo modificaron para que corra en otro puerto (Y no el defecto) entonces haz:

bash$  netstat  -tunap | grep mysql*

Si te aparece otro puerto distinto al 3306, tendras que decirle al API que usa Java para conectarse a MySQL que el puerto no es 3306 sino el indicado por netstat, ahora sino te aparece nada de nada, porfavor notificalo para proseguir al siguiente paso. (Ya que si esto ultimo ocurre MySQL esta escuchando por Sockets y no por TCP/IP).