Difference between revisions of "MySQL"

From Dietrich Blog (Strato)
Jump to: navigation, search
(Replaced content with "Has been moved to: http://blog.kr8.de/wiki-mysql/")
 
Line 1: Line 1:
== MySQL das führende Open-Source-Datenbanksystem ==
+
Has been moved to: http://blog.kr8.de/wiki-mysql/
{{TOCright}}
 
MySQL ist in meiner [[Anwendungskatalog|Anwendungsarchitektur]] das [[Datenbanken|Datenbank-System]] der ersten Wahl (siehe auch: [[OpenSourceSoftware]]).
 
 
 
Siehe auch: [[Unicode|Unicode]], [[MediaWiki]]
 
 
 
== Installation Server ==
 
* Definitive Software Library ID: '''MySQL'''
 
* Name: MySQL
 
* Version:  5.0.41-community-nt ([[ComputerGraumann]]) und 5.0.41-community-nt ([[ComputerKragenbaer]])
 
* Hersteller/Bezugsquelle: http://www.mysql.com
 
* Installationsordner:  D:\bin\MySQL
 
* Konfigurationsdateien:  D:\bin\MySQL\my.ini ---> [[Datensicherung]]
 
** Datenbank-Ordner: '''d:\var\MySQL\data''' ---> [[Datensicherung]]
 
* Programmstart: [[Windows Service]] '''MySQL'''
 
* InnoDB tablespace: InstallDir......
 
 
 
== Konfiguration ==
 
=== my.ini ===
 
Eine Konfigurationsdatei '''my.cnf''' wird nicht verwendet. Alles steht in '''my.ini'''.
 
<br />Die wichtigsten Einträge in der Konfigurationsdatei <b>my.ini</b> sind:
 
 
 
<pre>
 
# CLIENT SECTION
 
# ----------------------------------------------------------------------
 
#
 
# The following options will be read by MySQL client applications.
 
# Note that only client applications shipped by MySQL are guaranteed
 
# to read this section. If you want your own MySQL client program to
 
# honor these values, you need to specify it as an option during the
 
# MySQL client library initialization.
 
#
 
[client]
 
 
 
port=3306
 
 
 
[mysql]
 
 
 
default-character-set=utf8
 
 
 
</pre>
 
 
 
und
 
 
 
<pre>
 
# SERVER SECTION
 
# ----------------------------------------------------------------------
 
#
 
# The following options will be read by the MySQL Server. Make sure that
 
# you have installed the server correctly (see above) so it reads this
 
# file.
 
#
 
[mysqld]
 
 
 
# The TCP/IP Port the MySQL Server will listen on
 
port=3306
 
 
 
 
 
#Path to installation directory. All paths are usually resolved relative to this.
 
basedir="D:/bin/MySQL/"
 
 
 
#Path to the database root
 
datadir="D:/var/MySQL/data/"
 
 
 
# The default character set that will be used when a new schema or table is
 
# created and no character set is defined
 
default-character-set=utf8
 
 
 
# The default storage engine that will be used when create new tables when
 
default-storage-engine=INNODB
 
</pre>
 
 
 
=== Show Variables ===
 
mysql> show variables like "%character%";
 
 
 
{| class=wikitable
 
|-
 
| Variable_name || Value
 
|-
 
| character_set_client || utf8
 
|-
 
| character_set_connection || utf8
 
|-
 
| character_set_database || utf8
 
|-
 
| character_set_results || utf8
 
|-
 
| character_set_server || utf8
 
|-
 
| character_set_system || utf8
 
|-
 
| character_sets_dir || \xampp\mysql\share\charsets/
 
|}
 
 
 
 
 
mysql> show variables like "%collation%";
 
 
 
{| class=wikitable
 
|-
 
| Variable_name || Value
 
|-
 
| collation_connection || utf8_general_ci
 
|-
 
| collation_database || utf8_general_ci
 
|-
 
| collation_server || utf8_general_ci
 
|}
 
 
 
== Datenbankadministration ==
 
* User-Id für Administrator (root) mit Passwort versehen
 
* User-Id '' (ghost) gelöscht
 
* Datenbank-Backup / [[Datensicherung]] : d:\bin\jobs\backupMySQL.bat
 
 
 
== Remote Access ==
 
Manchmal möchte man von einem anderen Computer auf den MySQL-Datenbank-Server zugreifen; z.B. schon im eignen [[LAN]] weil man etwas kopieren will oder zu einem Server bei einem [[WebProvider]], wo man eine MySQL-Anwendung gehosted hat (z.B. ein [[MediaWiki]], [[Joomla]],  [[WordPress]], oder, oder...).
 
 
 
Das macht man am besten dadurch, dass der MySQL-Server über eine [[TCP/IP]]-Adresse erreichbar ist. In meiner ersten MySQL-Installation auf den [[Windows Vista]]-Computern war das zunächst nicht möglich.
 
 
 
Der erste Versuch war, in die Konfigurationsdatei '''my.ini''' eine Zeile mit der IP-Adresse einzutragen:
 
  bind-address=192.168.1.23
 
 
 
Das erwies sich später aber als verkehrt, weil mit einer solchen Zeile der MySQL-Server nur noch auf der angegebenen Adresse hört (in diesem Beispiel also nicht mehr auf 127.0.0.1 und auf localhost). Ohne eine solche Zeile lauscht der MySQL-Server auf '''allen''' IP-Adressen und das ist fürs erste schon das sinnvollste.
 
 
 
Was ich allerdings tun musste war, im [[Firewall]] auf dem MySQL-Server den TCP-Port 3306 freizuschalten. Danach war der MySQL-Server von den anderen Computern in meinem LAN erreichbar. Testweise konnte ich mit dem MySQL-Client [[SQLyog]] eine Verbindung vom Client [[ComputerKragenbaer]] zum Server [[ComputerGraumann]] aufbauen.
 
 
 
=== Datenbank-Synchronisation ===
 
Wenn der ''Remove Access'' dann funktioniert, steht als Anwendung das [[Synchronisieren]] von Datenbanken auf den verschiedenen Computern auf der Tagesordnung. Dafür benötigt man entsprechende Software.
 
 
 
Die freie Ausgabe von [[SQLyog]] unterstützt das nicht mehr, man benötigt die kostenpflichtige Enterprise-Version. Die gibt es als Test-Version für 30 Tage.
 
 
 
Als Test der DB-Synchronisation habe ich meine mit [[MediaWiki]] gemachte [[WebsiteWiki]] mit der Trial-Version von SQLyog Enterprise mal von Graumann auf Kragenbaer, der ja als '''Standby''' fungieren soll, synchronisiert. Das hat ganz gut geklappt. Allerdings kan man mit der Trial-Version immer nur 2 Tabellen per Hand synchronisieren....
 
 
 
=== HTTP Tunneling ===
 
WEnn nun der '''Remote Access''' nicht nur im eigenen LAN, sondern auch zum externen [[WebProvider]] gehen soll, hat man das problem, dass fast alle WebProvider den dafür nötigen TCP-Port 3306 abschalten. In so einer Situation soll das sog. '''SQL Tunnelling''' helfen; dabei läuft alles über den HTTP-Port 80....
 
 
 
Vorgehensweise mit SQLyog Enterprise:
 
* PHP-Skript '''SQLyogTunnel.php''' auf den gehosteten Server hochgeladen
 
* Im SQLyog eine neue Connection einrichten mit:
 
** '''HTTP''': Use HTTP-Tunneling,  URL: http://kr8.de/SQLyogTunnel.php
 
** '''MySQL''': MySQL Host Adress=localhost,  Username= ..., Password=...
 
 
 
== Installation ODBC-Treiber ==
 
Der aktuelle ODBC-Treiber für MySQL kommt direkt von www.mysql.com und trägt die Bezeichnung '''MySQL Connector/ODBC 3.5.1'''.
 
* Definitive Software Library ID: '''MySQL_ODBC'''
 
* Name: MySQL Connector/ODBC
 
* Version: 3.5.1
 
* Hersteller/Bezugsquelle: http://www.mysql.com/downloads
 
 
 
== Installation JDBC-Treiber ==
 
Der berühmte Treiber von  Mark Matthews (1998) (OpenSourceSoftware "MM.MySQL") wird seit August 2002 von MySQL  unter der Bezeichnung '''MySQL Connector/J 3.0''' offiziell unterstützt ([[Java|Java]]). Mark Matthews verstärkt jetzt das MySQL-Team.
 
* Definitive Software Library ID: '''MySQL_JDBC'''
 
* Name: MySQL Connector/J
 
* Version: 3.0.15
 
* Hersteller/Bezugsquelle:  http://www.mysql.com/downloads
 
* Installations-Ordner:  {$JAVA_HOME}\jre\lib\ext  Beispielsweise d:\Programme\Java\jdk1.5.0_04\jre\lib\ext
 
* Installation: Kopieren der Datei mysql-connector-java-3.0.15-ga-bin.jar in den Installationsordner
 
* Informationen zur Benutzung
 
** Klasse: com.mysql.jdbc.Driver
 
** URL: jdbc:mysql://localhost/datenbankname
 
 
 
== Problems and Solutions ==
 
My SQL 4.1 verwendet zum Passwort-Hashing SHA1 (160 Bit = 40 Zeichen) Infos: http://pajhome.org.uk/crypt/md5/
 
 
 
=== Workaround ===
 
Angeblich soll das Problem mit der PHP MySQL client library (libmysql.dll) auch durch ein Upgrade von PHP nicht gelöst werden können. Daher habe ich das von MySql veröffentlichte Workaraound [[http://dev.mysql.com/doc/mysql/en/old-client.html|http://dev.mysql.com/doc/mysql/en/old-client.html]] benutzt:
 
 
 
* Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function:
 
** mysql> SET PASSWORD FOR wikiuser@localhost = OLD_PASSWORD('newpwd');
 
*  Tell the server to use the older password hashing algorithm:
 
** Start mysqld with the --old-passwords option. (Eingetragen in: my.ini  ???)
 
 
 
{| class=wikitable
 
|-
 
| '''User''' || '''Password''' || '''Hash''' || '''Application'''
 
|-
 
| root || lotusnotes || SHA1 || ...
 
|-
 
| knowhowuser || ... || old || Know...
 
|-
 
| mediauser || ... || old || [[MediaWiki]]
 
|-
 
| linkuser || ... || old || [[PhpLinks]]
 
|-
 
| owluser || ... || old || [[Owl]]
 
|-
 
| pmauser || ... || old || PhpMyAdmin
 
|-
 
| wikiuser || ... || old || Wiki
 
 
 
|}
 
 
 
=== MySql Clients ===
 
Siehe: [[DatenbankFrontends]]
 
* [[PHP]] 4.3.9 kann es nicht
 
* [[PhpMyAdmin]] 2.6.0 kann es nicht (wegen PHP 4.3.9 ???)
 
* [[MySQL-Front|MySQL-Front]] 3.0 kann es
 
* [[SQLyog|SQLyog]] v3.11 kann es nicht, v4.1 kann es
 
* [[Navicat|Navicat]] 6.0.7 kann es
 
* [[DBManager|DBManager]] professional 2.2.0 kann es nicht, Version 3.1 kann es
 
* [[DbVisualizer]] Free 4.3.4  kann es
 
 
 
== Datenbanken ==
 
{| class=wikitable
 
|-
 
| '''Datenbankname''' ||  '''Nutzung''' 
 
|-
 
| asom || Application Sizing Modell 
 
|-
 
| fruits || Für SQL-Workshop im [[PhpWorkshop]]
 
|-
 
| gmo || Migrierte GMO-Access-Datenbanken
 
|-
 
| joomla || für [[WebsiteJoomla]]
 
|-
 
| knowhow || Mein KnowlegeManagement: [[phpKnowhow]]
 
|-
 
| medien || MediaLibrary mit Videos etc.
 
|-
 
| mysql || Die Standard-Datenbank von MySQL
 
|-
 
| owl || [[Owl]] DokumentenManagement
 
|-
 
| phplinks || Anwendung [[PhpLinks]] (Link-Management)
 
|-
 
| phpwiki || Mein altes phpwiki (migriert nach TWiki)
 
|-
 
| telefonbuch || Telefonnummern zur Inverssuche (u.a.)
 
|-
 
| test || Die Standard-Test-Datenbank von MySQL
 
|-
 
| wikicons || [[MediaWiki]]  [[WebsiteWikiConsulting]]
 
|-
 
| wikifaulkner || [[MediaWiki]] [[WebsiteMonikaFaulkner]]
 
|-
 
| wikikracht || [[MediaWiki]] [[WebsiteWiki]]
 
|-
 
| wikilexikon || [[MediaWiki]] [[WebsiteLexikon]]
 
|-
 
| wordpress || [[WordPress]]
 
|-
 
| xanadu || Meine Archiv-Datenbank (Anwendung Archivierung)
 
 
 
|}
 
 
 
== Notizen zu MySQL ==
 
=== Volltext-Index ===
 
Anlegen einer Tabelle mit Volltext-Index:
 
<pre>
 
CREATE TABLE articles  (
 
id  INT UNSIGGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
 
title VARCHAR(200),
 
body TEXT,
 
FULLTEXT(title,body)
 
);
 
</pre>
 
Beispielhafte Such-Anfragen über den Volltext-Index:
 
<pre>
 
SELECT * FROM articles WHERE MATCH(title,body) AGAINST('nadel');
 
SELECT *,MATCH(title,body) AGAINST('nadel') as Score  FROM articles WHERE MATCH(title,body) AGAINST('nadel');
 
SELECT * FROM articles WHERE MATCH(title,body) AGAINST('+nadel -streifen' IN BOOLEAN MODE);
 
</pre>
 
 
 
 
 
-- Main.DietrichKracht - 17 May 2004
 
[[Category:DefinitiveSoftwareLibrary]][[Category:Datensicherung]]
 

Latest revision as of 15:56, 7 May 2020

Has been moved to: http://blog.kr8.de/wiki-mysql/