Siehe auch: Unicode, MediaWiki, WordPress, ComputerAcerBaer, SQLyog, PhpMyAdmin
Stand: 02.03.2023
Das Datenbanksystem MySQL (aus Wiki)
MySQL das führende Open-Source-Datenbanksystem
MySQL ist in meiner Anwendungsarchitektur das Datenbank-System der ersten Wahl (siehe auch: OpenSourceSoftware).
Installation MySQL Server auf ComputerAcerbaer
Auch auf meinem neuen (Mitte 2022) Laptop-Computer Acerbaer habe ich MySQL installiert.
- Definitive Software Library ID: MySQL
- Name: MySQL
- Hersteller/Bezugsquelle: http://www.mysql.com
- Programmstart: Windows Service MySQL
- InnoDB tablespace: InstallDir……
Computer | Version | Installationsordner | Konfigurationsdatei Datensicherung |
Graumann | 5.1-community-nt | ||
Kragenbaer | 5.0.41-community-nt | ||
Acerbaer | 5.1.33-community | C:\Program Files (x86)\MySQL\MySQL Server 5.1 | C:\Program Files (x86)\MySQL\MySQL Server 5.1\my.ini |
Flachmann | 8.0.30 Community | C:\Program Files\MySQL\SQL Server 8.0 | C:\ProgramData\MySQL\MySQL Server 8.0\my.ini |
Konfiguration von MySQL
In die Konfigurationsdatei my.ini wird eingetragen:
Eine Konfigurationsdatei my.cnf wird nicht verwendet. Alles steht in my.ini.
Die wichtigsten Einträge in der Konfigurationsdatei my.ini sind:
Parameter | Computer Acerbaer | Computer Flachmann | Computer Graumann |
port | 3306 | 3306 | |
default-character-set | latin1 | utf8mb4 | |
basedir | “C:/Program Files (x86)/MySQL/MySQL Server 5.1/” | “C:/Program Files/MySQL/MySQL Server 8.0/” | |
datadir (–>Datensicherung) | “C:/Data/MySQL/Data/” | “D:/Data/MySQL/Data/” | |
# 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 und
# 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="C:/bin/MySQL/" #Path to the database root datadir="C:/data/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
Show Variables
mysql> show variables like “%character%”;
Tabelle 1: MySQL Show Variables
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%”;
Tabelle 2: MySQL Show Variables
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
Datenbankverwaltung kann mit den auf ComputerAcerbaer installierten SQL-Tools erfolgen. Z.B.
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 für MySQL
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). 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 [[1]] 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 ???)
Tabelle 3: MySQL User und Passwords
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 3.0 kann es
- SQLyog v3.11 kann es nicht, v4.1 kann es
- Navicat 6.0.7 kann es
- DBManager professional 2.2.0 kann es nicht, Version 3.1 kann es
- DbVisualizer Free 4.3.4 kann es
Meine MySQL-Datenbanken
Tabelle 4: Meine Datenbanken
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:
CREATE TABLE articles ( id INT UNSIGGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT(title,body) );
Beispielhafte Such-Anfragen über den Volltext-Index:
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);
— Main.DietrichKracht – 17 May 2004