RSS

Archiv der Kategorie: Datenbanken

MySQL: Installieren und Einrichten

MySQL: Installieren und Einrichten

Motivation

Ich arbeite schon seit Jahren mit dem MySQLDBMS, der – nach eigenen Angaben – „populärsten Datenbank der Welt“. Jo, und ich bin der „sexiest man of the world“ 😉

Ob das stimmt oder nicht, ist nebensächlich, auf jeden Fall läuft das „Ding“ auf vielen LAMP Servern, seit vielen Jahren, stabil und zuverlässig. Es wird ständig weiterentwickelt, und, obwohl es mittlerweile MySQL AB, über Sun zu Oracle „gewandert“ ist, gibt es den MySQL Community Server immer noch als freie Version:

MySQL Community Server is a freely downloadable version of the world’s most popular open source database that is supported by an active community of open source developers and enthusiasts.“ 

MySQL ist ein relationales DBMS, mit vielen Features (Transaktionssicherheit, Stored Procedures etc.), ist auf vielen Plattformen verfügbar (Linux, Windows etc.), bietet eine Kommandozeile (für Nerds ;-)), aber auch gute GUI-Tools, die eine schnelle und einfache Administration ermöglichen. Eine umfangreiche API (C, C++, Java) mit der entsprechenden Middleware (ODBC, JDBC etc.) stellt die Nutzung bzw. Konnektivität zu einer Vielzahl von 3rd-Party bzw. eigenentwickelten Applikationen sicher.

 Ich könnte das jetzt fortführen, aber eigentlich bin ich ein Freund von „kurz und bündig“ und werde deshalb jetzt meine „Schwärmerei“ hier beenden…

 

Download

 Der MySQL Community Server ist aktuell in der Version 5.5.28 verfügbar und sowohl als Source-Code, als auch für folgende Plattformen (vorkompiliert) erhältlich:

Download

Ladet einfach die für Euch am Besten geeignete Version herunter.

 

Installation 

Ich kann an dieser Stelle nur meine Erfahrungen mit Windows bzw. Debian (Ubuntu/Linux Mint etc.) schildern und sage mal einfach: „Null Problemo“. Nach dem Download genügt ein Start des Installationsprogrammes und man wird durch die einzelnen Schritte geführt. Ich konnte bisher damit keine Probleme feststellen, das Ganze ist also selbsterklärend.

Trotzdem will ich beispielhaft die Installation am Beispiel „Windows“ veranschaulichen:

  1. Download:  Download
    Je nach vorhandenem Windows System, die 32- oder 64-Bit Variante herunterladen:
     

    Wer sich nicht registrieren will, selektiert einfach den Link „No thanks, just start my download!“…
     
    …und der Download beginnt… 

  2. Bei Windows genügt ein „Doppelklick“ auf die heruntergeladene Datei und die Installation beginnt:




     

     

Konfiguration

 Der nächste Schritt der Installation umfasst die grundlegende Konfiguration des MySQL Servers:


.
..

Je nach Anwendungsfall sollte man im folgenden Schritt entweder „Developer Machine“ (testen, spielen, entwickeln) oder „Server Machine“ (produktiver Einsatz) wählen. Der Unterschied besteht im Wesentlichen in der Performance.

Im nächsten Schritt sollte habe ich „Multifunctional Database“ gewählt

Danach einfach die Default-Einstellungen übernehmen…bis zum Schritt:
 

Hier legt man das Passwort des MySQL-Administrators fest und entscheidet, ob der Zugang für den Administrator „root“ nur lokal oder auch remote („Enable root access from remote machines“) möglich sein soll!

 

 

Spiel

Danach ist die Installation abgeschlossen und man fragt sich: „Wie geht es weiter?“ Ohne die Installation von Tools (s.u.), bleibt einem nur die Kommandozeile. MySQL wird mit vielen Programmen ausgeliefert, die über die Kommandozeile, alle Aufgaben erledigen lassen.

Falls die Installation unter Windows7 durchgeführt wurde, kann man über das Start-Menü die „MySQL Kommandozeile“ erreichen (unter Linux geht das über das Starten eines Terminals und der Eingabe des Befehls „mysql“):

Danach erscheint die Kommandozeile:

Hier gibt man das während der Konfiguration gewählte root-Passwort ein:

Und nun geht das los…

  1. Erst mal nachschauen, welche Datenbanken bereits vorhanden sind.
     
  2. Datenbank selektieren, mit der man arbeiten will: 
  3. Definierte Tabellen anschauen:
  4. Spielen 😉
    1. Tabellendefinition anschauen:
       
    2. Tabelleninhalt anschauen:
       

 

Ernst

Nachdem man sich im vorigen Kapitel ausgetobt hat will man vielleicht irgendwann ernsthaft eine Datenbank und Tabellen anlegen und diese mit Inhalt füllen. Als Referenz kann man das MySQL 5.1 Referenzhandbuch zu Rate ziehen.

Nachfolgend nur ein kurzer Überblick:

  1. Anlegen einer Datenbank:
    CREATE DATABASE DB-Name;
  2. Datenbank benutzen:
    USE DB-Name;
  3. Anlegen einer Tabelle:
    CREATE TABLE Tabellenname (Definition);
  4. Definition der Tabelle anschauen:
    DESCRIBE Tabellenname;
     
  5. Einfügen eines Datensatzes:
    1. Über eine Datei:
      LOAD DATA LOCAL INFILE Pfad INTO TABLE Tabellenname
    2. direkt mit INSERT:
       INSERT INTO Tabellenname VALUES (Werte);
       
      Hinweis: Ist egal, welchen Wert man für die erste Spalte angibt, da das Attribut „AUTO_INCREMENT“ gesetzt ist, d.h. der Wert wird automatisch hochgezählt. Wichtig ist nur, dass ein Wert auftaucht, z.B. „0“ (Null):
       
  6. Lesen des Datensatzes:
    SELECT * FROM Tabellenname;
     

 

Dump/Restore

MySQL bietet Kommandozeilenprogramme an, die ein Backup/Restore der Datenbank ermöglichen. Wem das zu umständlich ist, der sei auf das Kapitel „Tools“ verwiesen. 

  1. Backup aller Datenbanken:
    mysqldump –user=XXXXXXXX –password=XXXXXXX -A > /PATH/TO/DUMPFILE.SQL
  2. Backup einer oder mehrerer Datenbanken:
    mysqldump –user=XXXXXXXX –password=XXXXXXX –databases DB_NAME1 DB_NAME2 > /PATH/TO/DUMPFILE.SQL 
  3. Backup einer Tabelle:
    mysqldump –user=XXXXXXXX –password=XXXXXXXX –databases DB_NAME –tables TABLE_NAME1 TABLE_NAME2 > /PATH/TO/DUMPFILE.SQL 
  4. Restore:
    mysql –verbose –user=XXXXXXXX –password=XXXXXXXX DB_NAME < /PATH/TO/DUMPFILE.SQL 

 

Tools

Die Kommandozeile ist natürlich alles andere als „convenient“ 😉

Es gibt eine Reihe an „ausgereiften“ – um nicht zu sagen „professionellen“ – Tools, die sowohl dem Anwender, als auch dem Administrator, das Leben erleichtern.

Das – meiner Meinung nach – wichtigste Tool ist die „MySQL Workbench“. Dieses Tool ist aktuell in der Version 5.2.44 verfügbar und kann unter folgenden Link heruntergeladen werden: MySQL Workbench.

Auch dieses Tool ist für eine Vielzahl an Platttformen erhältlich:

Im Grunde ist es egal, für welche Plattform man das Tool installiert, die Bedienung ist immer gleich. Für Windows ist aktuell nur die 32Bit-Version erhältlich, aber, das dürfte in 99% derFälle egal sein.

Nach dem Download startet man die Installation durch „Doppelklick“ auf die heruntergeladene Datei…auch hier genügt ein Akzeptieren der Standardeinstellungen…

Das Ergebnis: eine – meiner Meinung nach – umfangreichen, benutzerfreundliche, ergonomische Workbench, bei der bereits die installierte MySQL Installation konfiguriert ist:

Alle administrativen Aufgaben lassen sich im Bereich „Server Administration“ ausführen und ein grafisches „Pendant“ der Kommandozeile ist im Bereich „SQL Development“ verfügbar. Will man weitere MySQL Instanzen hinzufügen, so wähle man im Bereich „Server Administration“ den Befehl „New Server Instance“.  Will man mit einer Datenbank arbeiten, kann man sich im Bereich „SQL Development“ austoben.

Wenn ich mich recht erinnere, gab es früher mehrere Tools, die inzwischen unter der MySQL Workbench zusammengefasst worden sind.

 

Konnektivität

Um auf MySQL-Datenbank(en) von „außen“ zuzugreifen, gibt es eine Vielzahl von Middleware (ODBC, JDBC, APIs für C/C++ etc.). Diese sind unter MySQL Connector verfügbar:

 

Fazit

MySQL hat sich als professionelles DBMS über Jahre hinweg behauptet. Da es als freie Version verfügbar ist und viele Features professioneller, kommerzieller DBMS Applikationen für „umme“ bietet, kann man – meiner Meinung nach – nichts falsch machen, wenn man es installiert. Das System wird auch im professionellen Bereich eingesetzt, dort vorwiegend als „LAMP“ Installation. Über Jahre hinweg ist das System als freie Version erhältlich, wird ständig weiterentwickelt und ist auf allen wichtigen Plattformen „frei“ verfügbar. Es beinhaltet alle wichtigen Features eines relationalen DBMS und macht es deshalb sowohl als Lernsystem als auch als produktives System attraktiv. 

 

Links

MySQL 5.1 Referenzhandbuch 

 
Hinterlasse einen Kommentar

Verfasst von - November 30, 2012 in Datenbanken, IT

 

Schlagwörter:

SAP NW IdM: Zugriff auf die IdM DataSource mit Java

SAP NW IdM: Zugriff auf die IdM DataSource mit Java

Motivation

Um auf die IdM Datenbank von einem SAP NW AS Java zuzugreifen, kann man sich eine DataSource anlegen. Wenn man sich auf dem AS Java befindet, auf dem die UI für IdM deployed ist, kann man die vorhandene DataSource nutzen. Bei Verwendung der DataSource hat man gegenüber dem „DriverManager“ den Vorteil, dass alle Verbindungsparameter zentral im Applikationsserver definiert werden können, man benötigt also im Code keine Parameter für beispielsweise Username, Passwort etc.

Vorgehensweise

Dazu startet man den Netweaver Administrator (NWA)  und geht auf: Konfiguration > Infrastruktur > Anwendungsressourcen:

Falls vorhanden, sollte man auf dem AS Java für die IdM UI folgende DataSource vorfinden: 

 

Die folgende Einstellungen besitzt:

Um nun eine DataSource anzulegen, geht man wie folgt vor:

Anlegen einer neuen Ressource vom Typ „Neue JDBC-Custom-DataSource“:

Anschließend übernimmt man die o.g. Einstellungen.

Wenn man eine Applikation deployed, die auf diese Ressource bzw. Datenbank zugreifen soll, kann man das relativ einfach, mit folgenden Code erledigen. Im Beispiel wird davon ausgegangen, dass eine DataSource mit Namen „IDM_DataSource“ angelegt wurde bzw. existiert:

import java.sql.*;
import javax.naming.*;
import javax.sql.*;

final class GetConnection {

  /** Uses JNDI and Datasource (preferred style).   */
  static Connection getJNDIConnection(){
    String DATASOURCE_CONTEXT = "jdbc/IDM_DataSource";

    Connection result = null;
    try {
      Context initialContext = new InitialContext();
      if ( initialContext == null){
        log("JNDI problem. Cannot get InitialContext.");
      }
      DataSource datasource = (DataSource)initialContext.lookup(DATASOURCE_CONTEXT);
      if (datasource != null) {
        result = datasource.getConnection();
      }
      else {
        log("Failed to lookup datasource.");
      }
    }
    catch ( NamingException ex ) {
      log("Cannot get connection: " + ex);
    }
    catch(SQLException ex){
      log("Cannot get connection: " + ex);
    }
    return result;
  }
...
}

Als Vergleich: die konventionelle Vorgehensweise über den DriverManager am Beispiel MySQL:

import java.sql.*;
import javax.naming.*;
import javax.sql.*;

final class GetConnection {

  /** Uses DriverManager.  */
  static Connection getSimpleConnection() {
    //See your driver documentation for the proper format of this string :
    String DB_CONN_STRING = "jdbc:mysql://localhost:3306/airplanes";
    //Provided by your driver documentation. In this case, a MySql driver is used : 
    String DRIVER_CLASS_NAME = "org.gjt.mm.mysql.Driver";
    String USER_NAME = "juliex";
    String PASSWORD = "ui893djf";
    
    Connection result = null;
    try {
       Class.forName(DRIVER_CLASS_NAME).newInstance();
    }
    catch (Exception ex){
       log("Check classpath. Cannot load db driver: " + DRIVER_CLASS_NAME);
    }

    try {
      result = DriverManager.getConnection(DB_CONN_STRING, USER_NAME, PASSWORD);
    }
    catch (SQLException e){
       log( "Driver loaded, but cannot connect to db: " + DB_CONN_STRING);
    }
    return result;
  }
...
}

Egal, für welchen Weg man sich entscheidet (DataSource im AS Java oder DriverManager), es wird ein Handle auf die Datenbank vom Typ „Connection“ zurückgegeben. Mit „Connection“ kann man dann alle üblichen Operationen (SQL-Statements etc.) auf der Datenbank ausführen, siehe „Lesson: JDBC Basics„.

Fazit

Im Interesse der Wartbarkeit eines Systems sollte man bei Verwendung eines Applikationsservers (egal ob IBM Websphere, SAP Netweaver, JBoss etc.) immer den Weg der DataSource gegenüber dem „DriverManager“ vorziehen. Man macht seinen Code dadurch flexibler und unabhängig von irgendwelchen systemspezifischen Einstellungen.

motivation

To connect to the IdM (Identity Management) database of SAP NW IdM you can use the ‚old-style‘ ‚DriverManager‘ class or you can use the ‚DataSource“ mechansim provided by SAP NetWeaver AS Java. Wenn man sich auf dem AS Java befindet, auf dem die UI für IdM deployed ist, kann man die vorhandene DataSource nutzen. Bei Verwendung der DataSource hat man gegenüber dem „DriverManager“ den Vorteil, dass alle Verbindungsparameter zentral im Applikationsserver definiert werden können, man benötigt also im Code keine Parameter für beispielsweise Username, Passwort etc.

Vorgehensweise

Dazu startet man den Netweaver Administrator (NWA)  und geht auf: Konfiguration > Infrastruktur > Anwendungsressourcen:

Falls vorhanden, sollte man auf dem AS Java für die IdM UI folgende DataSource vorfinden: 

 

Die folgende Einstellungen besitzt:

Um nun eine DataSource anzulegen, geht man wie folgt vor:

Anlegen einer neuen Ressource vom Typ „Neue JDBC-Custom-DataSource“:

Anschließend übernimmt man die o.g. Einstellungen.

Wenn man eine Applikation deployed, die auf diese Ressource bzw. Datenbank zugreifen soll, kann man das relativ einfach, mit folgenden Code erledigen. Im Beispiel wird davon ausgegangen, dass eine DataSource mit Namen „IDM_DataSource“ angelegt wurde bzw. existiert:

import java.sql.*;
import javax.naming.*;
import javax.sql.*;

final class GetConnection {

  /** Uses JNDI and Datasource (preferred style).   */
  static Connection getJNDIConnection(){
    String DATASOURCE_CONTEXT = "jdbc/IDM_DataSource";

    Connection result = null;
    try {
      Context initialContext = new InitialContext();
      if ( initialContext == null){
        log("JNDI problem. Cannot get InitialContext.");
      }
      DataSource datasource = (DataSource)initialContext.lookup(DATASOURCE_CONTEXT);
      if (datasource != null) {
        result = datasource.getConnection();
      }
      else {
        log("Failed to lookup datasource.");
      }
    }
    catch ( NamingException ex ) {
      log("Cannot get connection: " + ex);
    }
    catch(SQLException ex){
      log("Cannot get connection: " + ex);
    }
    return result;
  }
...
}

Als Vergleich: die konventionelle Vorgehensweise über den DriverManager am Beispiel MySQL:

import java.sql.*;
import javax.naming.*;
import javax.sql.*;

final class GetConnection {

  /** Uses DriverManager.  */
  static Connection getSimpleConnection() {
    //See your driver documentation for the proper format of this string :
    String DB_CONN_STRING = "jdbc:mysql://localhost:3306/airplanes";
    //Provided by your driver documentation. In this case, a MySql driver is used : 
    String DRIVER_CLASS_NAME = "org.gjt.mm.mysql.Driver";
    String USER_NAME = "juliex";
    String PASSWORD = "ui893djf";
    
    Connection result = null;
    try {
       Class.forName(DRIVER_CLASS_NAME).newInstance();
    }
    catch (Exception ex){
       log("Check classpath. Cannot load db driver: " + DRIVER_CLASS_NAME);
    }

    try {
      result = DriverManager.getConnection(DB_CONN_STRING, USER_NAME, PASSWORD);
    }
    catch (SQLException e){
       log( "Driver loaded, but cannot connect to db: " + DB_CONN_STRING);
    }
    return result;
  }
...
}

Egal, für welchen Weg man sich entscheidet (DataSource im AS Java oder DriverManager), es wird ein Handle auf die Datenbank vom Typ „Connection“ zurückgegeben. Mit „Connection“ kann man dann alle üblichen Operationen (SQL-Statements etc.) auf der Datenbank ausführen, siehe „Lesson: JDBC Basics„.

Fazit

Im Interesse der Wartbarkeit eines Systems sollte man bei Verwendung eines Applikationsservers (egal ob IBM Websphere, SAP Netweaver, JBoss etc.) immer den Weg der DataSource gegenüber dem „DriverManager“ vorziehen. Man macht seinen Code dadurch flexibler und unabhängig von irgendwelchen systemspezifischen Einstellungen.

 

Schlagwörter: , , , , , ,

Oracle: Aus DATE Spalten die Zeit ermitteln

Oracle: Aus DATE Spalten die Zeit ermitteln

Ich hatte heute das Problem, dass ich aus einer als „DATE“ definierten Spalte einer DB-Tabelle, die Zeit ermitteln sollte. Das DBMS war Oracle und die „schuldige“ Tabelle wie folgt definiert:

Wie man erkennen kann sind die Spalten „Created“ und „Updated“ vom Typ „DATE“. Ich habe in die Spalte „Created“ einen Zeitstempel mit Datum und Uhrzeit eingefügt.

Ein einfaches SELECT-SQL-Statement, like:

select created from ... where ...;

Bringt folgendes Ergebnis:

Da fehlt der Zeitstempel 😦

Nun kann man in „DATE“ Spalten auch Daten ohne Zeitstempel ablegen, aber in diesem Fall war ich mir sicher, dass da auch noch ein Zeitstempel versteckt ist.

Die Lösung:

select to_char(created, 'DD-MON-YYYY HH24:MI:SS') from ... where ...;

Und das Ergebnis:

Datum und Zeitstempel 🙂

Links:

http://psoug.org/reference/timestamp.htmlToday I had a problem with an Oracle database. I had to get the date and the time from a DATE formatted column. The rewarded and „guilty“ table was defined as follows:

The columns „Created“ and „Updated“ are of type  „DATE“. To check it out, I inserted a row with a timestamp. But a simple select statement like

select created from ... where ...;

only showd me the date, not the time:

 

solution:

select to_char(created, 'DD-MON-YYYY HH24:MI:SS') from ... where ...;

result:

Date and time was returned 🙂

Links:

http://psoug.org/reference/timestamp.html

 
Hinterlasse einen Kommentar

Verfasst von - April 25, 2012 in Datenbanken

 

Schlagwörter: , , ,

 
Erstelle eine Website wie diese mit WordPress.com
Jetzt starten