Gå til innhold

Problemer med tilkobling til lokal database


Anbefalte innlegg

Skrevet

Hei.

 

Jeg sliter som sagt med å koble til min MySQL database på ubuntu-linuxen min. Jeg bruker Connector/J som databasedriver, men tydeligvis vil ikke Java/OS'et la meg koble på. Her er koden jeg lagde for å prøve og logge meg inn:

 

import java.sql.Connection;
import java.sql.DriverManager;

public class DatabaseApp {

public static void main(String[] args) {
	Database db = new Database("jdbc:mysql://localhost/Test user=root&password=********");
	db.connect();
}

}

class Database {

private String url;

public Database(String url) {
	this.url = url;
}

public void connect() {
	try {
		Class.forName("com.mysql.jdbc.Driver").newInstance();
		Connection c = DriverManager.getConnection(url);
		System.out.println("Databasen er oppe å kjører...");
		c.close();
	} catch(Exception ex) {
		System.out.println("Kunne i opprette kontakt med databasen: \n");
		ex.printStackTrace();
	}
}
}

 

Når jeg kjører denne koden får jeg dette unntaket:

 

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'Test user=root&password=********'
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
  at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)
  at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
  at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
  at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at Database.connect(Database.java:15)
  at DatabaseApp.main(DatabaseApp.java:5)

 

Noen som kan komme med noen klok forklaring på dette? Fikk en lignende melding da jeg prøvde å kjøre MySQL klienten via terminal, men endret kommandoen fra

 

$ mysql

 

til

 

$ mysql -uroot -p

 

og da gikk det plutselig fint.

 

På forhånd takk :D

Videoannonse
Annonse
Skrevet

Du må gi brukeren tilgang til selve databasen. Vet ikke hvordan en gjør det, da jeg ikke har brukt noe databaser selv. Men hvertfall det feilmeldingen sier. At brukeren som kjører scriptet ikke har tilgang til databasen.

Skrevet (endret)

om en ser litt på feilmeldinga så ser man fort at:

 

Access denied for user ''@'localhost' to database 'Test user=root&password=********'

 

med andre ord jeg tviler på at du har en database som heter "Test user=root&password=********".

 

 

uansett, prøv heller dette:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class mySQLtest {


public static void main(String[] args) {
	Connection con = null;

	try {
	  Class.forName("com.mysql.jdbc.Driver").newInstance();
	  con = DriverManager.getConnection("jdbc:mysql://localhost/mindatabase",
		"brukernavn", "passord");

	  if(!con.isClosed())
		System.out.println("Tilkoblet");

	} catch(Exception e) {
	  System.err.println("Exception: " + e.getMessage());
	} finally {
	  try {
		if(con != null)
		  con.close();
	  } catch(SQLException e) {}
	}
}

}

 

håper dette hjelper!

Endret av Leken
Skrevet

Jeg har en database som heter Test jo. Oprettet den via MySQL klienten/kommandolinja. Når jeg skriver "show databases;" kommer den ihvertfall opp.

 

Men uansett, prøvde endringene, og fikk en annen feilmelding nå:

java.sql.SQLException: Unexpected exception encountered during query.
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
  at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2581)
  at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1751)
  at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3425)
  at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2045)
  at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
  at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at java.sql.DriverManager.getConnection(libgcj.so.81)
  at Database.main(Database.java:13)
Caused by: java.io.CharConversionException
  at gnu.gcj.convert.Input_iconv.read(libgcj.so.81)
  at java.lang.String.init(libgcj.so.81)
  at java.lang.String.<init>(libgcj.so.81)
  at com.mysql.jdbc.SingleByteCharsetConverter.<init>(SingleByteCharsetConverter.java:152)
  at com.mysql.jdbc.SingleByteCharsetConverter.initCharset(SingleByteCharsetConverter.java:107)
  at com.mysql.jdbc.SingleByteCharsetConverter.getInstance(SingleByteCharsetConverter.java:85)
  at com.mysql.jdbc.ConnectionImpl.getCharsetConverter(ConnectionImpl.java:2759)
  at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:679)
  at com.mysql.jdbc.Buffer.writeStringNoNull(Buffer.java:663)
  at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2025)
  at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
  ...9 more

Skrevet (endret)

beklager, var _litt_ trøtt i går..

det programmet ditt trodde første gangen var at databasen ikke bare hette "Test", men "Test user=root&password=********"

 

 

import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseApp 
{	
public static void main(String[] args) 
{		
	Database db = new Database("jdbc:mysql://localhost/test", "brukernavn", "passord");		
	db.connect();	
	}
}

class Database
{		
private String url;	
private String username;
private String password;
public Database(String url, String username, String password) 
{		
	this.url = url;	
	this.username = username;
	this.password = password;
	}		
public void connect() 
{		
	try 
	{			
		Class.forName("com.mysql.jdbc.Driver").newInstance();			
		Connection c = DriverManager.getConnection(url, username, password);			
		System.out.println("Databasen er oppe å kjører...");			
		c.close();		} 
	catch(Exception ex) {			
		System.out.println("Kunne ikke opprette kontakt med databasen: \n");			
		ex.printStackTrace();		
		}
	}
}

 

sånn, håper det virker denne gangen :)

 

Som du ser har jeg brukt argumentene brukernavn og passord i tillegg til url, da det er enklere å bruke igjen ved DriverManager.getConnection som trenger de tre.

 

men den siste feilmeldingen er jeg ikke sikker på..

Endret av Leken

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...