Avatar billede medions Nybegynder
25. april 2004 - 20:10 Der er 30 kommentarer og
1 løsning

Server configuration denies access to data source

Hej Jeg får flg. fejl når jeg prøver at connecte til min MySQL database:

Server configuration denies access to data source

Jeg har tjekket om brugeren kan logge på, og det kan den godt... Hvad kan være galt?

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 20:29 #1
Vi skal nok have lidt mere info.
Avatar billede medions Nybegynder
25. april 2004 - 20:30 #2
Hvad ønsker du mere?

//>Rune
Avatar billede medions Nybegynder
25. april 2004 - 20:33 #3
package itarkiv;
/**
*
* @author  srr
* @version
*/
public class Database extends dbHandler
{
   
    /** Creates new Database */
    public Database()
    {
    }

    public boolean open()
    {
        return super.open("org.gjt.mm.mysql.Driver","jdbc:mysql://localhost/itarkivdk","itarkiv","xxxx");
    }
}

her er min connection class (Database.java) (jeg har oxo din dbHandler.java fil)

Her er så selveste min .jsp fil:

<jsp:useBean id="db" scope="request" class="itarkiv.Database" />

<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>

<html>
<head>
    <title></title>
</head>
<body>

    <%
   
        ResultSet res;
        String sql="select * from tbltekster";
       
        if(!db.open())
        {
            return;
        }
       
        res=db.doQuery(sql);
        db.close();

        try
        {
            while(res.next())
            {
                out.println("Navn = "+res.getString("Teksten"));
                out.println("Telefonnr = "+res.getInt("txtID"));
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace(System.out);
            out.println(System.out);
        }
%>
</body>
</html>


//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 22:46 #4
Der er nok diskys dbhandler - jeg bruger sjældent den slags database wrapper.

Hvor kommer fejlen henne ?
Avatar billede medions Nybegynder
25. april 2004 - 22:50 #5
fejlen står i min log. (stdout.log).

Selveste dokumentet er helt tomt, der står ikke noget.

I kildekoden er der flg.:






<html>
<head>
    <title></title>
</head>
<body>

   

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 22:52 #6
En System.out.println(e.getMessage()) inde i dbHandler open ?
Avatar billede medions Nybegynder
25. april 2004 - 22:54 #7
Her er min dbHandler, hvor i den siger du jeg skal skrive det?

package itarkiv;
import java.sql.*;

/**
*
* @author  srr
* @version
*/
public class dbHandler extends Object
{
   
    private Connection con=null;

    /** Creates new DataBase */
    public dbHandler()
    {
    }

    public boolean open(String dbDriverName, String dbClassName, String user, String pass)
    {           
//        System.out.println("************************************************************************");
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName, user, pass);
//                System.out.println("con = "+con);
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (InstantiationException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        return true;
    }
   
    public void close()
    {
        if(con!=null)
        {
            try
            {
                con.close();
                con=null;
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
    }
   
    public int doUpdate(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
//                System.out.println("SQL Update = "+(System.currentTimeMillis()-time)+" ms  "+sql);
                return stat.executeUpdate(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return 0;
    }

    public ResultSet doQuery(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
//                System.out.println("SQL Update = "+(System.currentTimeMillis()-time)+" ms  "+sql);
                return stat.executeQuery(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return null;
    }
}

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 22:57 #8
Jeg siger ikke at du skal sætte det ind - jeg gættede på at det var der.

Et eller andet må jo skrive den fejl tekst ud !

Det set imidelertid ud til at der kaldes e.printStackTrace overalt, så jeg
er puzzelet.

Medmindre der også er en stack trace i stdout.log eller stderr.log ...
Avatar billede arne_v Ekspert
25. april 2004 - 22:57 #9
Du har ikke været inde og lege med security manager ?
(http://www.caucho.com/resin-3.0/security/securitymanager.xtp)
Avatar billede medions Nybegynder
25. april 2004 - 23:00 #10
Hmm Arne, har du ikke en connectionkode til MySQL som jeg kan prøve at teste med for at være sikker på det ikke er koden den er galt med?

Nej, jeg har ikke været inde og pille ved securitymanageren.

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 23:02 #11
Følgende virker:

        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Test", "", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM T1");
        while(rs.next()) {
            int f1 = rs.getInt(1);
            String f2 = rs.getString(2);
            System.out.println(f1 + " " + f2);
        }

eneste forskel jeg lige kan se er at du bruger det gamle driver navn mens
jeg bruger det nye.
Avatar billede arne_v Ekspert
25. april 2004 - 23:05 #12
I gamle dage brugte man vistnok også:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost/itarkivdk?user=itarkiv&password=xxxx");
Avatar billede arne_v Ekspert
25. april 2004 - 23:06 #13
Du kan jo prøve at variere lidt med driver class name og URL, men jeg tror ikke at
det er det.
Avatar billede medions Nybegynder
25. april 2004 - 23:09 #14
Hmm, er det sådan at jeg kan prøve at sende password og username til din mail så du kan logge på med SSH på FreeBSD'en, og så du vil forsøge at lave det?

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 23:11 #15
http://www.google.dk/search?q=resin+%22Server+configuration+denies+access+to+data+source%22&ie=UTF-8&oe=UTF-8&hl=da&btnG=Google-s%C3%B8gning&meta=

viser at andre også har haft fejlen - de fleste svar antyder at det er er
et MySQL username/password problem
Avatar billede medions Nybegynder
25. april 2004 - 23:11 #16
Brugeren jeg logger ind med, logger jeg også ind med i et PHP script, på samme server, så jeg tror ikke det er det.

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 23:13 #17
En PHP side på samme server som JSP siden ?
Avatar billede medions Nybegynder
25. april 2004 - 23:13 #18
Ja... Altså jeg kører PHP på samme Apache server... :)

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 23:13 #19
Så vil mit bedste forslag være at prøve med de 4 kombinationer
af driver class og URL.
Avatar billede medions Nybegynder
25. april 2004 - 23:15 #20
Jeg er ikke med på hvad du mener med driverclass og URL?
Avatar billede arne_v Ekspert
25. april 2004 - 23:18 #21
driver class:

org.gjt.mm.mysql.Driver
com.mysql.jdbc.Driver

URL + username + password:

"jdbc:mysql://localhost/itarkivdk","itarkiv","xxxx"
"jdbc:mysql://localhost/itarkivdk?user=itarkiv&password=xxxx","",""
Avatar billede arne_v Ekspert
25. april 2004 - 23:19 #22
Hvilken version af MySQL ?

Hvilken version af MySQL JDBC ?
Avatar billede medions Nybegynder
25. april 2004 - 23:22 #23
mysql-server-4.0.18

Hvordan finder jeg ud af hvilken JDBC der er på?

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 23:25 #24
Hvad har du downloadet og installeret ?
Avatar billede medions Nybegynder
25. april 2004 - 23:26 #25
Jeg har forsøgt mig med mysql-connector-java-3.0.6-stable-bin.jar

//>Rune
Avatar billede medions Nybegynder
25. april 2004 - 23:26 #26
Installeret..Hmm ja.. :)
Hvis det er at installere den at smække den i /lib biblioteket, så har jeg installeret den, men er det rigtig nok?

//>Rune
Avatar billede arne_v Ekspert
25. april 2004 - 23:28 #27
Hvis man få retableret conenction (men det gør du nok ikke), så kan man få
driveren med:

con.getMetaData().getDriverName()
con.getMetaData().getDriverVersion()
Avatar billede arne_v Ekspert
25. april 2004 - 23:28 #28
3.0.6 lyder helt fin
Avatar billede medions Nybegynder
26. april 2004 - 23:55 #29
Så fandt jeg frem til den endenlige løsning.

Der skal både oprettes en bruger med vært som % og localhost når det er java der skal ha' adgang til MySQL fra Unix!

Mange tak for hjælpen Arne! -venligst lig et svar så du kan få dine points.

//>Rune
Avatar billede arne_v Ekspert
27. april 2004 - 21:58 #30
svar
Avatar billede arne_v Ekspert
29. maj 2004 - 00:08 #31
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester