# Datenbank anlegen, .



## Leroy42 (18. Apr 2006)

Back from Eastern   

Ich habe über's Wochende mySQL installiert und mich ein wenig eingearbeitet;
es funktioniert auch alles auf Anhieb wunderbar   

Jetzt habe ich jedoch noch ein paar Fragen, zu denen ich nichts ergooglen oder _erforen_ konnte;
ich hoffe, ihr könnt mir da weiterhelfen:

1) Wie kann ich Datenbanken via JDBC anlegen?
Ich weiß zwar wie es von der Kommandozeile funktioniert, aber ich muß ja
eine Datenbank beim _Provider_ anlegen. Um andererseits eine Verbindung zu mySQL beim
Provider herzustellen, muß ich ja bereits eine Datenbank angeben und schreiben:

```
DriverManager.getConnection("jdbc:mysql://<host>/<datenbank>", "<user>", "<password>");
```
Das Problem ist aber, daß ich die <datenbank> ja erst erstellen kann,
wenn eine Verbindung existiert  :autsch: 
Ich habe auch keine _Methode_ in java.sql.* gefunden, die eine Datenbank anlegt.

2) Wie kann ich via JDBC User anlegen und Passwörter
Im Prinzip das gleiche Problem wie unter 1)

3) Wie kann ich eine Sicherheitskopie einer DB anlegen bzw. wo finde ich sie um Download?
In meinem lokalen mySQL-Verzeichnis werden zwar Verzeichnisse des gleichen Namens der
angelegten Datenbanken angelegt, deren Inhalt ist aber immer nur ein paar KByte groß
und können daher nicht die Daten enthalten.


----------



## AlArenal (18. Apr 2006)

Ich weiß ja nicht, was für einen Provider du hast, aber entweder legen diese für dich leere Datenbanken an, die du dann benutzen kannst, oder aber du hast ein Web-Interface zur Konfiguration deines Web-Pakets und kannst dort Datenbanken anlegen.

Ansonsten ist es für eine Anwendung eher ein ungewöhnliches Szenario Datenbanken selbst anzulegen, außer vielleicht bei der Installation und da musst du dann extra die Benutzerdaten des root-Users angeben (der Datenbanken erstellen kann) und die dürfte dein Provider kaum freiwllig rausrücken  Im Falle von MySQL gibt es nämlich immer eine Datenbank "mysql", zu der man dann aushilfsweise connecten kann.

Die Benutzerverwaltung geschieht ebenfalls über die DB "mysql", siehe dazu die MySQL-Doku. Ein Backup kannste über einen SQL-Dump erledigen, oder auf Dateiebene durch Sicherung des Daten-Verzeichnisses (was einem Ärger einbringen kann, wenn man DBs unterschiedlicher MySQL-Versionen ineinandermanscht).


----------



## Leroy42 (18. Apr 2006)

AlArenal hat gesagt.:
			
		

> die Benutzerdaten des root-Users angeben (der Datenbanken erstellen kann) und die dürfte dein Provider kaum freiwllig rausrücken


Das bedeutet ja, daß auf dem Server des Providers nur ein mySQL-Server (wahrscheinlich andauernd) läuft  :shock: 

Wenn ich das gewußt hätte, hätte ich mir die ganze Sucherei danach schenken können,
wie ich einen mySQL-Server beim Provider starten kann  :x 

Immerhin erlebe ich jetzt mal, wie das mit den dümmsten Dummie-Fragen von der
anderen Seite der Theke aus erlebt wird   

Zu meiner 3. Frage kannst du mir nichts sagen?


----------



## AlArenal (18. Apr 2006)

Ich hab keine Ahnung, was du mit "in meinem lokalen mySQL-Verzeichnis" meinst. Bei den meisten providern ist über das Webinterface zur Konfiguration des Webspace auch ein Link z.B. auf phpMyAdmin verfügbar. Die Admin-Oberfläche (z.B. Confixx) kann zudem auch eigene Backup-Möglichkeiten getrennt für Web und DB anbieten. Ansonsten kannste phpMyAdmin auch selbst in deinen Webspace schaufeln und damit deine DB konfigurieren, SQL-Dumps ziehen, ....


----------



## Leroy42 (18. Apr 2006)

Mit _lokal_ meine ich die mySQL-Installation auf _meinem_  Rechner.
Ich habe eine Datenbank namens _dateien_ und darin 2 Tabellen namens
_files_ und _dirs_ angelegt, in denen ich testweise mal die Dateiinformation
meiner Festplatte eingefügt habe.
Im _data_-Verzeichnis meiner mySQL-Installation sind folgende Einträge.

```
Verzeichnis von C:\Programme\MySQL\MySQL Server 5.0\data

18.04.2006  16:16    <DIR>          .
18.04.2006  16:16    <DIR>          ..
18.04.2006  16:16                 0 aus1
18.04.2006  11:54        18.874.368 ibdata1
18.04.2006  11:54        10.485.760 ib_logfile0
18.04.2006  10:58        10.485.760 ib_logfile1
18.04.2006  10:57    <DIR>          mysql
18.04.2006  10:57    <DIR>          test
18.04.2006  11:52    <DIR>          dateien
```
und im Verzeichnis _dateien_

```
Verzeichnis von C:\Programme\MySQL\MySQL Server 5.0\data\dateien

18.04.2006  11:52    <DIR>          .
18.04.2006  11:52    <DIR>          ..
18.04.2006  11:49                65 db.opt
18.04.2006  11:52             8.590 dirs.frm
18.04.2006  11:52             8.702 files.frm
```

Meine Frage ist jetzt einfach, wie ich die Datenbank _dateien_ z.B. 
_mit nach Hause_ nehmen kann und dort JSP-Seiten zu entwickeln,
die dann später zum Provider upgeloaded werden. 

Umgekehrt möchte ich unsere vorhandene, XML basierte, Bestelldatei
per Java-Programm in die DB eintragen, und diese selbst dann wiederum
uploaden.

Das Verzeichnis _dateien_ alleine hin und her zu kopieren bringts leider nicht   
Ich vermute, daß die Daten selbst irgendwie in _ibdata1_ enthalten sind, aber
wie bekomme ich die da raus?


----------



## AlArenal (18. Apr 2006)

Normalerweise sind die Daten schon in den frm-Dateien. K.a. ob das für MySQL 5 geändert wurde oder du standardmäßig nen Tabellentyp benutzt, wo das nicht der Fall ist - da musste shcon selbst mal schauen 

Das Kopieren der DB-Dateien sehe ich wie weiter oben bereits beschrieben als problematisch an. Unterschiedliche MySQL-Versionen  unterstützrn unterschiedliche Features, haben andere Default-Zeichensätze, ... Das ist ähnlich wie manuell irgendwelche Java Class-Dateien zu verdengeln - fehleranfällig hoch 10. In der Regel hast du beim Provider auch eh keine Zugriff aufs Datenverzeichnis, das allein schon aus Sicherheitsgründen ausßerhalb des Webspace liegt und zum anderen nicht pro DB eingestellt werden kann, man bräcuhte also nen SymLink ins Verzeichnis der entsprechenden DB und dann wäre man wieder bei der Sicherheit... Außerdem wette ich 100 Euronen, dass dein Provider keine 5er MySQL einsetzt 

Entweder synchronisierst du von Hand mit SQL-Dumps, oder du schreibst dir selbst ein Tool zur Synchronisation, oder du denkst dir noch was viel verwegeneres aus...

RDBMS sind nicht dazu gedacht beinahe beliebig synchronisert werden zu können wie ein PDA...


----------



## Leroy42 (18. Apr 2006)

Erst mal Danke!.

Irgendwie hatte ich bisher wohl eine falsche Vorstellung von der technischen Realisierung einer Datenbank.
Anscheinend kann man die nicht so einfach wie M$-Würg oder -Exzess Dateien hin und her schieben   



			
				AlArenal hat gesagt.:
			
		

> ... oder du denkst dir noch was viel verwegeneres aus...


Das könnte mich reizen   Aber ich hebe soetwas lieber für die grauen Herbsttage auf.


----------



## AlArenal (18. Apr 2006)

Leroy42 hat gesagt.:
			
		

> Irgendwie hatte ich bisher wohl eine falsche Vorstellung von der technischen Realisierung einer Datenbank.
> Anscheinend kann man die nicht so einfach wie M$-Würg oder -Exzess Dateien hin und her schieben



Stell ich mir auch nicht ganz trivial vor, wenn ich bei ner Oracle oder DB2 anfange spezielle Daten-Partitionen zu sichern und zu restoren..


----------



## Dukel (18. Apr 2006)

AlArenal hat gesagt.:
			
		

> [...]
> RDBMS sind nicht dazu gedacht beinahe beliebig synchronisert werden zu können wie ein PDA...



MySql kennt einen Replikationsmodus mit Master / Slave und einen Clustermodus.

Aber für den fragesteller kommen wohl nur MySql Dumps in Frage, da er wohl keine Admin Rechte auf der DB haben wird.


----------



## AlArenal (18. Apr 2006)

Dukel hat gesagt.:
			
		

> AlArenal hat gesagt.:
> 
> 
> 
> ...



MySQLs Replikationsmechanismus halte ich dem Vorgehen bei der PDA-Sychronisierung für nicht analog und daher das Beispiel. Mit nem PDA kann ich zu jeder Zeit den Kram mit meinem Outlook, deinem Outlook und was-weiß-ich-nicht synchronisieren. Mit meiner lokalen MySQL-Server-Installation gehe ich irgendwohin und dengel mir von Hand einen zurecht um Daten von irgendwo nach irgendwo zu bekommen. Zwei unterschiedliche DBs gleichen Namens und schon isses aus mit aller Herrlichkeit..


----------

