MySQL
 MySQL (upd 2005 06 13)
Openstaande vraag:
bij foutmelding, bv "2 warnings"; waar kan je die opvragen?

concept
installatie
server
gebruik
beheer
commando's
voorbeeld

Types: Kolom Alle Teken Getal Datum
Externe Links
Kolom
VARCHAR(len)
CHAR(len)
DATE

Options
NULL, NOT NULL
DEFAULT "000-00-00"
SIGNED, UNSIGNED: -?
(m), (d) :decim

Attributen:
ZEROFILL
AUTO_INCREMENT
PRIMARY KEY
UNIQUE


Alle kolom types

- string
CHAR
VARCHAR
TEXT
TINYTEXT
MEDIUMTEXT
LONGTEXT
ENUM
SET
BLOB
TINYBLOB
MEDIUMBLOB
LOGNBLOB

- numeriek
FLOAT
DOUBLE
DECIMAL
INT
TINYINT
SMALLINT
MEDIUMINT
BIGINT

- datum tijd
DATETIME
yyyy-mm-dd hh:mm:ss
DATE
yyyy-mm-dd
TIME
hh:mm:ss
TIMESTAMP
yyyymmddhhmmss
YEAR
yyyy

Get Up
Concept:
Algemeen:
- MySQL is een server programma, draait bv op een Unix/Linux server, met de naam mysqld.
- De database zelf wordt gestart door deze deamon te starten, meestal vanuit een script, met paramters, en automatisch bij het starten van de fisieke server.
- De gebruiker communiceert met de database (MySQL hoofdletters) via een clientprogramma (mysql kleine letters) - Er zijn verschillende "clients":
mysql : is de gewone command prompt client
mysqldump
mysqlimport
- naast intikken op de commandprompt is het handiger om de commando's op te slaan in kleine tekstblokken met extentie .sql
- er zijn ook grafische clients op Linux, bv MySQL Navigator (Qt, GPL, Shi Bok Jang) o.m. bij SuSE distr.

Concept gebruik:
- Database initialiseren CREATE DATABASE
- tabellen maken CREATE TABLE
- daarbij sleutel voorzien; kan met INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY
- gegevens toevoegen in lege tabel
(Gegevens invullen kan op de command prompt INSERT, maar ook eenvoudig vanuit een data.txt bestand LOAD DATA, bestaande uit een record per lijn, tab-gescheiden data met een \N als NULL waarde.)
- gegevens opvragen
- gegevens aanpassen
- tabel aanpassen ALTER TABLE


- - mySQL menu
Installatie:
SuSE 7.0.
Uitgegaan van installatie SuSE 7.0, ik heb ook alvast de KMySQL client en admin geinstalleerd.
Verder blijkt er een mysql_install_db script te zijn dat de standaard database aanmaakt, wat als user gestart, een foutmelding oplevert . Als root liep het wel.
Ik vond een configuratie file in /etc/
Volgens beschrijvingen zou het beter zijn de mysqlserver (mysqld vereist geen root-rechten) niet als root te laten draaien. Dus moet je een aparte account maken; mysqladmin in de groep mysqlgrp.

Installatie met SuSE 7.2: er is een /usr/share/mysql, een /usr/bin met oa mysqladmin, mysqld, mysqltest, ..., in /etc/ vind je mysqlaccess.conf in /etc/init.d/ mysql en in /usr/sbin nog eens mysqld
mysql_install_db staat in /usr/bin, en kan alleen gestart worden als root (output).
Red Hat:
Deze distributie (RH 7.2) lijkt eerder postgresql gericht te zijn; geen MySQL aanwezig op deze versie (download). Een versie bij een boek mysql-3.22.32-pc-linux-gnu-i686.tar.gz kan eenvoudig geinstalleerd worden.
Afhalen van het net kan nutuurlijk ook: mysql-3.23.49a-pc-linux-gnu-i686.tar.gz op dit moment.
In tegenstelling tot kant en klare voorbereide distributie zoals bij SuSE, moet je een en ander wel zelf uitzoeken, vooral als je wil werken met Apache - Mysql - Php/perl combinatie. (ook wel "LAMP" genoemd: Linux Apache Mysql Php) Apache is wel bekend bij deze RH72 en was reeds geinstalleerd.
Door het installeren van de RPM's voorzien: Het script safe_mysqld start mysqld als user mysql. (auto bij boot)

Na installatie kan je testen met "mysql -h localhost test" en mysql terug verlaten met "quit".
Daarna zet je het wachtwoord voor de MySQL server: mysqladmin -u root password hfh3fgh4f
Gevolgd door mysqladmin -u root status geeft error Access denied for user root@localhost ...
Rechtentabellen opnieuw inlezen met mysqladmin -u root reload

- - mySQL menu
MySQL server
Server:
- mysqld : daemon (--help voor opties)
Beter is het natuurlijk een script te gebruiken:
- safe_mysqld : controlestart
- mysql.server : luistert naar start en stop op SystemV
Sluiten:
mysqladmin shutdown server afsluiten

- - mySQL menu
mysql client gebruik
Command prompt:
- mysql -h 192.168.1.3 -u pinguin -p
- mysql -h 192.168.1.3 -u pinguin --password=******** samp_db < ~/data/myquery.qry
(om query in een tekstbestand uit te voeren vanop de command prompt)
mysql client:

- - mySQL menu
Beheer
unix commandpromt:
mysqladmin variables
- isamchk: tabelanalyse, optimalisatie, herstellen
- myisamchk: tabelanalyse, optimalisatie, herstellen
- mysqldump : backup, copieren naar andere server
mysqldump samp_db > /usr/archives/mysql/samp_db.2001-08-07 backup om database terug te creeren
(ook naar een anders server toe bv om te dupliceren!)
mysqldump samp_db | gzip > /usr/archives/mysql/samp_db.2001-08-07.gz backup gecomprimmeerd
- mysqlimport
- mysqlshow db_name tbl_name

mysql prompt:
STATUS; toont current user, version, ports, ....
om een gebruiker pinguin aan te maken met alle rechten die kan inloggen vanop afstand:
GRANT ALL ON *.* TO pinguin@192.168.1.1 IDENTIFIED BY "sfivj12d4f" WITH GRANT OPTION;
(denk aan beveiligingsgebreken door gebruik van wildcards)
SHOW DATABASES;
SHOW TABLES;
DESCRIBE tbl_name;

- - mySQL menu
Commando's
Beheer:
GRANT ALL ON samp_db.* TO pinguin@localhost IDENTIFIED BY "wachtwoord"
GRANT ALL ON samp_db.* TO pinguin@% IDENTIFIED BY "wachtwoord"

- - mySQL menu
voorbeelden:
* Een "speed" voorbeeld:

CREATE DATABASE test;
USE test;
SELECT DATABASE();
CREATE TABLE tabel(sleutelveld VARCHAR(10) NOT NULL, veld VARCHAR(20) NOT NULL);
SELECT DATABASE();
DESCRIBE tabel;
INSERT INTO tabel VALUES('qsdfqsdfss', 'Data Een');
SELECT * FROM tabel;


* Importeren uit bestand voorbeeld:

LOAD DATA LOCAL INFILE "testdata.txt" INTO TABLE tabel;
en hetzelfde vanuit de shell:
mysqlimport - - local tabel testdata.txt


* Command prompt MySQL script voorbeeld:

Het aanmaken van een database, alsook het opvullen met sql statements die bewaard worden als .sql
Oproepen vanop de shell command prompt: (user is mysql username)
mysql -u pinguin -p < lnCreate.sql


- - mySQL menu
enkele .sql vb: testdata.txt now.sql- info.sql- makedbsample.sql- usesample0.sql- Hardware db (oef)

MySQL links

NL PHP/MySQL howto jun 2000
MySQL Contrib

Clients W32
MySQL-Front
EMS MySQL manager
MySQL Studio Premiumsoft
MySQL Tools