Networking Services
4/6 Databaseservices 4/6.1 MySQL-basisvaardigheden Ook in een Novell-omgeving zult u het steeds vaker tegen: MySQL is in toenemende mate belangrijk als systeemdatabase die door verschillende services gebruikt wordt. Uiteraard kunt u op SuSE Linux Enterprise Server een LAMPstack installeren, waarvan MySQL deel uitmaakt. Daarnaast wordt deze open-source database gebruikt door services zoals teaming en versioning. Hoog tijd dus dat u als beheerder kennis opdoet van MySQL-basisbeheervaardigheden. MySQL is niet echt moeilijk te installeren: gewoon de RPM’s installeren en u kunt aan het werk. Nadat u MySQL geïnstalleerd hebt, wordt de basis al automatisch geconfigureerd. Deze bestaat eruit dat de elementaire database wordt aangemaakt en dat de MySQL-server automatisch opstart. Deze taken worden hier voor u samengevat. 4/6.1.1 Eerste stappen na installatie Na de installatie moet u een systeemdatabase aanmaken. Soms doet het installatieprogramma van de service die u installeert dat voor u (zoals het geval is bij teaming), in andere gevallen moet u dit handmatig doen. In het laatste geval gebruikt u als root de opdracht mysql_install_db. Deze opdracht doet er korte tijd over de systeemdatabases aan te maken. Als dat gebeurd is, moet u nog een aantal taken uitvoeren. Om te beginnen zorgt u ervoor dat de MySQL-service gestart wordt. Controleer eerst of de MySQL-
Novell Netwerkoplossingen, aanvulling 32
4/6.1-1
Databaseservices
service niet toevallig al gestart is. Dit kunt u doen met een opdracht als: ps aux | grep mysql
Is de MySQL-service nog niet gestart, dan start u die op de volgende wijze alsnog: 1. Voer de opdracht cd /usr uit. 2. Start vervolgens de MySQL-server met de opdracht /usr/bin/mysqld_safe &. Nu de server gestart is, kunt u een wachtwoord instellen voor de rootgebruiker van MySQL. De onderstaande twee commando’s laten u zien hoe u dit kunt doen. De eerste opdracht gaat ervan uit dat u het wachtwoord instelt op de lokale computer, de tweede opdracht kan gebruikt worden om een wachtwoord in te stellen voor een MySQLservice die op een andere server draait: mysqladmin -u root password ‘new-password’ mysqladmin -u root -h ‘DNS-naam-van-uw-computer’ password ‘new-password’
Let er bij deze opdrachten op dat de waarden die u aan de verschillende commando’s meegeeft netjes tussen aanhalingstekens staan, dit is een voorwaarde voor succesvol MySQL-beheer. Het is overigens ook mogelijk om eerst als root aan te melden. De eerste keer dat u dit doet, heeft de MySQL-rootgebruiker toch nog geen wachtwoord. Nadat u bent aangemeld, ziet u de MySQL-prompt. Typ hier nu deze opdracht: SET PASSWORD FOR root = PASSWORD(“hieruwwachtwoord”);
4/6.1-2
Novell Netwerkoplossingen, aanvulling 32
Networking Services
Vergeet hierbij de puntkomma niet aan het einde van de opdracht, want deze is van groot belang. Als u op dit moment de MySQL-beheerinterface wilt verlaten, dan kan dat. Doe dit door de opdracht exit te typen. 4/6.1.2 Database aanmaken Nadat u de initiële configuratie hebt aangemaakt, kunt u de eerste database aanmaken. Om te beginnen moet u hiervoor in MySQL aanmelden als root. Dit doet u met de opdracht mysql -u root -p. U ziet nu zoals in de volgende listing een aantal gebruiksmeldingen en de MySQLprompt. root@mel:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 5.0.51a-3ubuntu5.1 (Ubuntu) Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql> Voordat u in MySQL een database kunt aanmaken, moet u op de Linux-prompt aanmelden als root.
Vanuit de MySQL-interface kunt u nu een nieuwe database aanmaken. Om bijvoorbeeld een database met de naam videos aan te maken typt u deze opdracht: CREATE DATABASE videos;
Ook hier weer moet u de puntkomma aan het einde van de opdracht niet vergeten. Mocht u die wel vergeten, dan
Novell Netwerkoplossingen, aanvulling 32
4/6.1-3
Databaseservices
wordt op de volgende regel een secundaire MySQL-prompt geopend waar u alsnog een losse puntkomma kunt invoeren. De volgende listing laat zien hoe dit werkt. MySQL antwoordt nu dat de database met succes is aangemaakt. mysql> CREATE DATABASE videos -> ; Query OK, 1 row affected (0.00 sec) Vergeet de puntkomma niet.
U mag overigens ook vanaf de Linux-commandoregel een nieuwe database aanmaken. In dat geval gebruikt u de opdracht mysqladm, maakt u zich hierbij als root bekend en geeft u aan dat u een nieuwe database wilt maken. Het complete commando om dit te doen ziet er dan als volgt uit: mysqladm -u root -p create videos
In dit commando worden drie opties gebruikt: • -u root: geeft aan dat u wilt aanmelden als root; • -p: vertelt aan MySQL dat het een wachtwoord moet vragen; • create videos: geeft de opdracht een database met de naam videos te maken. Opbouw van een database Met het aanmaken van een database alleen bent u er natuurlijk niet. De database moet uiteindelijk gevuld worden. Voor dit doel moet u kolommen aanmaken waarin de verschillende gegevens ingevoerd kunnen worden. Als dan die kolommen eenmaal zijn aangemaakt, moeten er gegevens in ingevoerd worden.
4/6.1-4
Novell Netwerkoplossingen, aanvulling 32
Networking Services
Permissies
Voordat het echter zover is, moet u permissies instellen. Dit kan echter niet zonder enige achtergrondkennis van de wijze waarop een MySQL-database is aangemaakt. Om te beginnen is er de database zelf. Dit is een verzameling gegevens die aan elkaar gelinkt zijn. Stel dat u een database maakt voor een videotheek, dan moeten in die database niet alleen gegevens voorkomen over de videofilms die in de collectie voorkomen, maar ook over de klanten van de videotheek. Door beide aan elkaar te linken kan de videotheek uiteindelijk zijn administratie bijhouden. In het voorbeeld van de videotheek zouden er binnen de database dus twee hoofdgegevenssets voorkomen: de klanten en de video’s. In MySQL-jargon wordt gezegd dat deze gegevenssets voorkomen in tabellen. U maakt dus een databasetabel aan voor de klanten en daarnaast een tabel voor de video’s. Binnen deze tabellen bevinden zich kolommen en rijen. Zo zou u bijvoorbeeld in de klantendatabase een kolom hebben met de naam van de klant, een kolom met het adres en nog veel meer. Per individuele klant worden dan vervolgens rijen aangemaakt. Hieronder ziet u een schematische weergave van zo’n database. Klanten Naam
Telefoon
Adres
Ad de Bree
5556789
Brink 6
Frits de Beuker
5551234
Velperplein 10
Ad van Doorn
5559988
Kalverstraat 16
Jo de Boer
5551212
Neude 11
Novell Netwerkoplossingen, aanvulling 32
4/6.1-5
Databaseservices
Videos Registratienummer
Titel
Acteur
Jaar
1
Bandits
Bruce Willis
2002
2
Embrace of the Vampire
Alyssa Milano
2001
3
Step Up
Jenna Dewan
2006
4
Tomb Raider Cradle of Life
Angelina Jolie
1999
Relationeel databasemanagementsysteem
Zoals u wellicht zult begrijpen, heeft het niet zo heel veel nut twee afzonderlijke databases aan te maken. De kracht van het hele concept ontstaat pas als de databases ook met elkaar verbonden worden. Dit kunt u bijvoorbeeld doen door een tabel aan te maken waarin een relatie wordt gelegd tussen enerzijds de klanten en anderzijds de video’s die de videotheek in bezit heeft. Dit is waaraan een relationeel databasemanagementsysteem (RDBMS) zijn ware kracht ontleent. Zo zou u bijvoorbeeld een derde tabel kunnen aanmaken waarin per klantnaam het registratienummer van de betreffende video wordt bijgehouden, zodat de videotheek precies weet wie wat in bezit heeft. Wilt u dit allemaal nog verder voeren, dan komen er ook nog andere gegevens bij kijken. Zo is het bijvoorbeeld voor een videotheek van belang dat de klanten de films die ze geleend hebben op tijd terugbrengen. U raadt het al, om zoiets voor elkaar te krijgen moet er ergens een koppeling gemaakt worden naar de uitleendatum van de films. U begrijpt dat de daadwerkelijke administratie van een videotheek er heel anders uit komt te zien dan geschetst is in dit eenvoudige voorbeeld. Zo is het bijvoorbeeld zeer aan te raden elke klant een uniek klantnummer te geven om eenvoudiger videoregistratienummers aan klantnummers te kunnen verbinden. En uiteindelijk zal de videotheek elke dag een overzicht willen uitdraaien van films die te laat zijn, zodat wanneer dit de spuigaten uitloopt, de video-
4/6.1-6
Novell Netwerkoplossingen, aanvulling 32
Networking Services
theekhouder contact kan opnemen met de klant om te achterhalen wanneer hij zijn films terugkrijgt. We gaan hier niet zover dat we dit allemaal stap voor stap uitleggen, voor dat doel zijn er uitstekende boeken geschreven over het ontwerp van relationele databasesystemen. Wel willen we u voldoende kennis meegeven om als beheerder de infrastructuur aan te maken waarin een database aangemaakt kan worden. Tevens leren we u hoe u, als die infrastructuur eenmaal op zijn plaats staat, er een eenvoudige database in kunt aanmaken. Niets dat u bij een klant achter zou willen laten als functioneel, maar voldoende om te begrijpen waar het nu eigenlijk om gaat.
Vier niveaus
Werken met MySQL-permissies Nu u begrijpt hoe een typische database is opgebouwd, bent u in staat beheerwerk op die database uit te voeren. Binnen MySQL stelt u permissies in op vier verschillende niveaus: • Globaal: gebruik globale permissies als u beheerderstaken wilt definiëren. • Database: stel permissies in op de database als u iemand de mogelijkheid wilt bieden tabellen aan te maken. • Tabel: gebruik deze permissies om gebruikers in alle kolommen van een tabel te laten werken. • Kolom: maak hiervan gebruik als u een gebruiker alleen maar in een specifieke kolom wilt laten werken en niet in de hele tabel. Om permissies uit te delen moet u als rootgebruiker in MySQL aan het werk. Zorg er dus eerst voor dat u in MySQL ingelogd bent als root door de opdracht mysql -u root -p te gebruiken. Vervolgens gebruikt u het GRANT-commando om rechten uit te delen. De volgende opdracht bijvoor-
Novell Netwerkoplossingen, aanvulling 32
4/6.1-7
Databaseservices
beeld zou gebruiker kim alle rechten geven op de tabel videos en tegelijktertijd voor deze gebruiker het wachtwoord geheim instellen. Let er overigens even op dat u dit momenteel nog niet succesvol kunt doen, u hebt immers de database videos nog niet aangemaakt. GRANT ALL ON videotheek.* TO ‘kim’ IDENTIFIED BY ‘geheim’;
Zoals u ziet is dit al met al een vrij lang commando, er is daarom ook best wel het een en ander over te vertellen. Als eerste het onderdeel ALL, dit zijn de permissies die u wilt uitdelen. Er zijn ook andere permissies waarmee u zou kunnen werken. We vatten ze hieronder voor u samen: • ALL: alle permissies. • SELECT: de permissie om gegevens te selecteren. • INSERT: het recht om gegevens toe te voegen. Deze permissies kunnen zoals gezegd op verschillende niveaus uitgedeeld worden: globaal, op een database, op een tabel of op een kolom. Om permissies toe te kennen op globaal niveau gebruikt u GRANT ALL ON *.*. Wilt u permissies uitdelen op alle tabellen in een specifieke database, dan gebruikt u GRANT ALL ON videotheek.*. Werkt achter de balie van uw videotheek iemand die alleen maar films mag beheren maar geen nieuwe klanten mag inschrijven, en wilt u deze persoon alle permissies geven op de tabel videos in de database videotheek, dan wordt de opdracht GRANT ALL ON videotheek.videos. Om permissies op specifieke kolommen uit te delen komt het commando er iets anders uit te zien: GRANT SELECT (titel), INSERT (jaar,registratienummer) ON videotheek.videos TO ‘kim’@‘192.168.1.10’;
4/6.1-8
Novell Netwerkoplossingen, aanvulling 32
Networking Services
U ziet dat u om te werken op specifieke kolommen binnen een tabel, naar die kolommen moet verwijzen. Even terug naar het eerste commando, waar gebruiker kim voor het eerst om de hoek kwam kijken. Binnen MySQL maakt u in principe de gebruikers niet een voor een apart aan, u doet dit gewoon tijdens het specificeren van de permissies door op dat moment naar de gebruiker te verwijzen en ook een wachtwoord aan die gebruiker toe te kennen. In principe verwijst u naar gebruikers die lokaal in MySQL zijn aangemaakt, maar u kunt ook verwijzen naar een gebruiker op een andere computer. Dit is bijvoorbeeld in het laatste voorbeeldcommando gebeurd, waar verwezen werd naar gebruiker kim op de computer met IP-adres 192.168.1.10. Hierbij wordt ervan uitgegaan dat op de genoemde computer een MySQL-proces draait waarbinnen een gebruiker bestaat met de naam kim. Een belangrijke zaak die u zich altijd moet realiseren bij het werken met gebruikers in MySQL: een MySQL-gebruiker heeft helemaal niets te maken met een Linux-gebruiker. Het is in dit voorbeeld bijvoorbeeld helemaal niet nodig dat er op Linux-niveau ook een gebruiker kim bestaat: u mag binnen MySQL een totaal opzichzelfstaande gebruikersomgeving aanmaken. Zoals al gezegd, de eerste keer dat u verwijst naar een bepaalde MySQL-gebruiker, moet u die gebruiker een wachtwoord geven. Als u dat niet doet, is er namelijk weliswaar een gebruikersaccount, maar dan kan dat gebruikersaccount zich niet aanmelden en dat is vrij nutteloos. U geeft dit wachtwoord door het onderdeel IDENTIFIED BY ‘geheim’ dat in het voorbeeldcommando gebruikt is. Dan nog een zaak die u bij het werken met MySQL niet moet vergeten: een MySQL-commando wordt altijd afgeslo-
Novell Netwerkoplossingen, aanvulling 32
4/6.1-9
Databaseservices
ten met een puntkomma. U zult merken dat dit zeker in het begin nog de nodige problemen geeft, maar zonder de puntkomma werkt het commando in kwestie dus gewoon niet. Niet vergeten dus. Een database aanmaken Het aardige is dat u op dit moment de permissies hebt uitgedeeld aan een gebruiker in MySQL, maar de gebruiker in kwestie bestaat dus gewoon nog niet. De volgende stap is dan ook om nu ook een database aan te maken. Het aanmaken van een database gebeurt doorgaans in vier stappen: 1. U maakt eerst de database zelf aan. Hiervoor gebruikt u de opdracht CREATE DATABASE. 2. Vervolgens geeft u met het commando USE aan dat u de betreffende database ook wenst te gaan gebruiken. 3. Gebruik nu de opdracht CREATE TABLE om een tabel aan te maken. Daarbij moet u ook gelijk de verschillende kolommen die u wilt gaan gebruiken definiëren. 4. Tot slot voert u waarden in die kolommen in zodat de database ook echt een inhoud begint te krijgen. Eerder in dit artikel hebt u gelezen over de database videotheek met daarin twee tabellen: videos en klanten. Laten we de tabel videos er nog eens bij halen zodat we hem vervolgens kunnen aanmaken. Videos Registratienummer
Titel
Acteur
Jaar
1
Bandits
Bruce Willis
2002
2
Embrace of the Vampire
Alyssa Milano
2001
3
Step Up
Jenna Dewan
2006
4
Tomb Raider Cradle of Life
Angelina Jolie
1999
4/6.1-10
Novell Netwerkoplossingen, aanvulling 32
Networking Services
1. Log in als root in mysql. Dit doet u met de volgende opdracht: mysql -h localhost -p -u root
U ziet overigens een nieuw element, deze keer hebben we de optie -h localhost gebruikt om aan te geven dat we willen inloggen op de database die op deze computer draait. U kunt namelijk net zo goed ook inloggen op een database die ergens anders draait. 2. Nu moet u de database aanmaken. Hieronder de opdracht die daarvoor nodig is: CREATE DATABASE videotheek;
MySQL antwoordt nu dat het alles prima vindt en de database voor u aanmaakt. 3. Vervolgens moet u de database in gebruik nemen. Dit doet u met de volgende opdracht: USE videotheek;
MySQL geeft als reactie de melding dat de database ‘changed’ is en u kunt aan het werk. 4. Nu begint het echte werk en moet u de tabel videotheek aanmaken. Hierbij geeft u ook meteen aan welke kolommen u in die tabel wilt hebben en daarbij welk type gegevens er in die kolommen moet komen. Laten we eerst maar eens het benodigde commando bekijken: CREATE TABLE videos (registratienummer INT, titel VARCHAR(40), acteur VARCHAR (40), jaar INT);
Novell Netwerkoplossingen, aanvulling 32
4/6.1-11
Databaseservices
Het commando spreekt waarschijnlijk voor een groot deel wel voor zich. Het enige dat wellicht toelichting vergt, is het gebruik van de typen bij het aanmaken van de kolommen. U ziet dat er twee kolommen zijn van het type INT. Dit staat voor integer, en net als in andere programmeertalen geeft dit type aan dat er een getal als waarde verwacht wordt. Dan is er het type VARCHAR, dat gebruikt wordt om aan te geven dat er een niet nader gespecificeerde tekenreeks in deze kolom voorkomt. Deze tekenreeks moet natuurlijk wel een maximale waarde hebben en die hebben we hier voor de kolommen titel en acteur ingesteld op 40 tekens. 5. We hebben nu de structuur van de database in principe aangemaakt, dus wordt het tijd gegevens in te voeren. Ondanks dat het commando dat u hiervoor gebruikt niet echt handig in elkaar zit, is het niet moeilijk te begrijpen: INSERT INTO videos (registratienummer, titel,acteur,jaar) VALUES(1,‘Bandits’,‘Bruce Willis’,2002); INSERT INTO videos (registratienummer,titel,acteur,jaar) values(1,‘Embrace of the Vampire’,‘Alyssa Milano’,2001); INSERT INTO videos (registratienummer,titel,acteur,jaar) VALUES(1,‘Step Up’,‘Jenna Dewan’,2006); INSERT INTO videos (registratienummer,titel,acteur,jaar) VALUES(1,‘Tomb Raider Cradle of Life’,‘Angelina Jolie’,1999);
Dat was al aardig wat werk tot zover, dus laten we voor alle zekerheid eerst eens alle opdrachten in een listing herhalen. De volgende listing laat zien welke commando’s u tot nu toe hebt ingevoerd en hoe MySQL daarop gereageerd heeft.
4/6.1-12
Novell Netwerkoplossingen, aanvulling 32
Networking Services
root@mel:~# mysql -h localhost -p -u root Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.0.51a-3ubuntu5.1 (Ubuntu) Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql> CREATE DATABASE videotheek; Query OK, 1 row affected (0.00 sec) mysql> USE videotheek Database changed mysql> CREATE TABLE videos(registratienummer INT, titel VARCHAR(40), acteur VARCHAR(40), jaar INT); Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO videos(registratienummer,titel,acteur,ja ar) VALUES(1,‘Bandits’,‘Bruce Willis’,2002); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO videos(registratienummer,titel,acteur,ja ar) VALUES(1,‘Embrace of the Vampire’,‘Alyssa Milano’,2001); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO videos(registratienummer,titel,acteur,ja ar) VALUES(1,‘Step Up’,‘Jenna Dewan’,2006); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO videos(registratienummer,titel,acteur,ja ar) VALUES(1,‘Tomb Raider Cradle of Life’,‘Angelina Jolie’,1999); Query OK, 1 row affected (0.00 sec) mysql> Een voorbeelddatabase aanmaken.
U hebt nu uw database aangemaakt. Tijd om te kijken of het ook inderdaad allemaal naar wens gegaan is. Dit doet
Novell Netwerkoplossingen, aanvulling 32
4/6.1-13
Databaseservices
u met het commando SELECT, in dit geval ziet dat commando er als volgt uit: SELECT * from videos;
Met dit commando geeft u aan dat u uit de tabel videos alles wilt zien. Het resultaat van de werkzaamheden tot nu toe ziet u in deze listing:
De inhoud van de tabel videos tot nu toe.
4/6.1.3 MySQL opstarten en afsluiten Op dit punt hebt u MySQL geconfigureerd en is de eerste database klaar voor gebruik. Tijd om eens wat verder te kijken naar de MySQL-service zelf en ervoor te zorgen dat deze op de juiste wijze kan opstarten. Het kan zijn dat uw distributie een servicescript geïnstalleerd heeft waarmee u de service eenvoudig kunt starten. In dat geval gebruikt u service mysql status om te kijken wat momenteel de status is en als MySQL momenteel niet up is, service mysql start om het te starten. Geef het programma even de tijd om alle databases te installeren, het kan een tijdje duren voordat dit volledig gebeurd is.
4/6.1-14
Novell Netwerkoplossingen, aanvulling 32
Networking Services
4/6.1.4 Gegevens uit de database opvragen U hebt nu een eenvoudige database. Het nut hiervan is natuurlijk dat u uit die database ook gegevens kunt opvragen. Hiervoor maakt u gebruik van het SELECT-commando. De volgende regel laat zien wat de algemene syntaxis van deze opdracht is: SELECT kolom1, kolom2, kolom3 FROM tabel WHERE zoekcriteria;
U hebt als voorbeeld hiervan al de opdracht select * from videos; gezien. Omdat hier geen verdere kolomspecificatie opgegeven was en ook geen aanvullende zoekcriteria, liet deze opdracht gewoon de volledige tabel zien. Het kan ook specifieker, de volgende opdracht bijvoorbeeld laat alle video’s zien die geproduceerd zijn in het jaar 2002: SELECT * FROM videos WHERE year = 2002;
U kunt de criteria die u met een SELECT-statement gebruikt ook eenvoudig samenvoegen. Neem bijvoorbeeld het volgende commando: SELECT * FROM videos WHERE jaar != 2002 AND acteur = ‘Alyssa Milano’;
Deze opdracht vertelt dat u alle rijen wilt zien waar records in voorkomen die niet geproduceerd zijn in 2002 en waarvan de acteur Alyssa Milano is. U ziet dat de het ANDstatement gebruikt is om te kijken naar records die aan beide criteria voldoen. Let daar even op bij het werken met databases: als er AND in staat, moet aan beide voorwaarden voldaan worden. Wilt u een query opgeven waarin aan een van beide criteria wordt voldaan, dan gebruikt u OR. U ziet hiervan een voorbeeld in de volgende query: Novell Netwerkoplossingen, aanvulling 32
4/6.1-15
Databaseservices
SELECT titel FROM videos WHERE jaar = 2001 OR jaar = 2002;
Dit laatste commando laat alle titels zien van films die ofwel in 2001 ofwel in 2002 zijn uitgekomen. Het gebruik van AND en OR zorgt nogal eens voor verwarring. In het dagelijkse spraakgebruik zou u zeggen dat u alle films wilt zien die in 2001 en 2002 zijn uitgekomen. In databasejargon kan dat niet, een film is in 2001 uitgekomen of in 2002, maar niet in beide tegelijk. Vandaar dat u in het laatste voorbeeld OR ziet om de jaren van elkaar te onderscheiden en niet een AND-statement. 4/6.1.5 Grafisch beheer U kunt MySQL beheren door op de commandoregel in te loggen en databases aan te maken of query’s te versturen zoals u in het voorgaande hebt gelezen. MySQL biedt echter ook goede mogelijkheden voor grafisch beheer. Waarschijnlijk biedt uw distributie deze tools standaard aan in het mysql-gui-tools-package. Gebruik de installatiemethode van uw distributie om ze te installeren. Als dit gebeurd is, start u de GUI-tools met behulp van de MySQL Administrator;
Met de grafische MySQL Administrator voert u eenvoudig beheer uit van uw MySQL-databases.
4/6.1-16
Novell Netwerkoplossingen, aanvulling 32
Networking Services
gebruik hiervoor de opdracht mysql-administrator (mysqladmin op Ubuntu). U krijgt dan het loginvenster uit de volgende afbeelding te zien. Voer hier de naam in van de server waarmee u wilt verbinden en de naam van uw MySQLrootaccount met het bijbehorende wachtwoord. Eenmaal in de MySQL Administrator-tool ziet u een grafisch venster met daarin verschillende beheercategorieën. Hieronder treft u een kort overzicht van de mogelijkheden die hier geboden worden.
Vanuit MySQL Administrator voert u grafisch beheer uit van uw MySQL-server.
U komt standaard terecht in het venster Server Information. Hier vindt u algemene informatie over het MySQLproces op uw server. U ziet bijvoorbeeld hoeveel interne resources uw server beschikbaar heeft en welke versie van MySQL gestart is.
Novell Netwerkoplossingen, aanvulling 32
4/6.1-17
Databaseservices
Op het tabblad Service Control ziet u meldingen die gegenereerd zijn tijdens het opstarten van MySQL. Ziet u hier niets, dan is het ook goed, in dat geval is MySQL namelijk gewoon probleemloos opgestart. Vanuit dit venster kunt u de service ook stoppen en weer opnieuw starten.
Vanuit het Service Control-scherm ziet u wat er gebeurt tijdens het opstarten van MySQL.
Vervolgens is er het tabblad Startup Parameters. Hier vindt u een interface naar verschillende tabbladen waarmee u bepaalt hoe het MySQL-proces gestart wordt. Let er hierbij wel even op waarvan u precies de performanceparameters aanpast. Er is namelijk een mysqld_safe-proces en een ‘echt’ mysqld-proces. Mysqld_safe heeft niet veel opties die aangepast kunnen worden; als u de volledige MySQL start, hebt u wel verschillende opties om bijvoorbeeld performanceparameters of locaties van logbestanden aan te passen.
4/6.1-18
Novell Netwerkoplossingen, aanvulling 32
Networking Services
Er zijn verschillende performanceparameters die u kunt aanpassen.
Vanuit de User Administration-interface bepaalt u wat uw gebruikers precies mogen doen.
Novell Netwerkoplossingen, aanvulling 32
4/6.1-19
Databaseservices
Op het tabblad User Administration maakt u nieuwe gebruikers aan. Behalve de gebruikers aanmaken kunt u deze ook permissies geven vanuit deze interface. Op het tabblad Schema Privileges bijvoorbeeld geeft u gebruikers toegang tot de database als geheel. Ook kunt u op het tabblad Resource Limits instellen hoe heftig een gebruiker de database mag belasten. Als het gaat om het echte beheer van de server zelf, is de optie Server Connections van groot belang. Hier ziet u een overzicht van alle gebruikers die op dit moment een thread open hebben staan. Mocht u van een bepaalde thread last hebben, dan is dit ook de interface om het betreffende proces af te sluiten. Ook is het mogelijk om onder User Connections een gebruiker te termineren waarbij alle processen die die gebruiker op dat moment open had staan ook afgesloten worden.
Vanuit het tabblad Server Connections kunt u processen afsluiten als dat nodig is.
4/6.1-20
Novell Netwerkoplossingen, aanvulling 32
Networking Services
Het tabblad Health geeft u een algemeen overzicht van de gezondheid van uw MySQL-server. Het toont informatie over aantallen connecties en geheugengebruik. Daarnaast monitort u hier alle status- en servervariabelen op basis waarvan u kunt bekijken hoe het met uw server gaat. Ook handig: naast de weergave van de verschillende parameters wordt ook getoond wat momenteel de maximale instelling is voor die parameter. Dat maakt het een stuk eenvoudiger om indien nodig de parameter op te hogen.
De Health-interface toont verschillende aspecten van de prestaties van uw server.
Het volgende tabblad toon logbestanden. MySQL houdt in /var/log/mysql verschillende logs bij, het error log met foutmeldingen, het mysql.log met algemene meldingen en het slow log dat aangemaakt wordt met minder belangrijke statusmeldingen. U kunt deze logs natuurlijk op de traditionele Linux-manier bekijken vanuit /var/log/mysql, met een pager als less of tail, maar vanuit de MySQL AdminiNovell Netwerkoplossingen, aanvulling 32
4/6.1-21
Databaseservices
strator bekijkt u deze logs eenvoudig met de grafische utility.
De Server Logs-interface laat zien wat er allemaal op uw MySQL-server gebeurt.
Als beheerder wilt u er waarschijnlijk ook voor zorgen dat er goede back-ups zijn van uw databases en tabellen. Dit regelt u eenvoudig vanuit de Backup-interface. Hier maakt u back-upprojecten aan. Dit doet u door eerst een naam te geven aan het project. Vervolgens bepaalt u welke databases en tabellen u in de back-up wilt meenemen. Vervolgens klikt u op Save Project om het project op te slaan. Daarna start u de back-up door op Start Backup te klikken. Als de back-up voltooid is, hebt u daarmee de gegevens in uw database veiliggesteld.
4/6.1-22
Novell Netwerkoplossingen, aanvulling 32
Networking Services
Vergeet niet met regelmaat een back-up van uw database te maken.
Als u dan een back-up hebt aangemaakt, zal het ook wel eens voorkomen dat u deze terug wilt zetten. Dit doet u via de Restore Backup-interface. Hier ziet u linksonder in beeld een overzicht van alle back-upbestanden die u ooit hebt aangemaakt. Selecteer hier om te beginnen het backupbestand dat u terug wilt zetten. Vervolgens vraagt het back-upprogramma met welke tekenset de back-up is aangemaakt. Geen idee wat u hier moet antwoorden? Kies dan gewoon de standaardkarakter set die wordt voorgesteld, meestal gaat het dan wel goed. Nadat u aangegeven hebt wat u wilt terugzetten, moet u aangeven waar u het terug wilt zetten. Dit doet u door middel van de optie Restore selected tables in. Hier treft u een lijst met beschikbare databases, die overigens aangeduid worden als schema’s. Is de oorspronkelijke database Novell Netwerkoplossingen, aanvulling 32
4/6.1-23
Databaseservices
niet meer intact? Selecteer dan de optie Original Schema. Als alternatief is het ook mogelijk hier een andere database te selecteren om daar de back-up in terug te zetten. Ook is het mogelijk op het tabblad Selection iets nauwkeuriger aan te geven wat u precies terug wilt zetten: de hele database of alleen maar een selectie van een paar tabellen uit die database? Klaar met het maken van uw selectie? Klik dan op Restore Backup om te beginnen met het herstel van de back-up.
Als u een goede back-up hebt, is het niet moeilijk specifieke tabellen uit uw database terug te zetten.
De opties onder Replication Status zijn alleen in ingewikkelde databases relevant. Hier regelt u replicatie van uw databases. Dit betekent dat u zo een configuratie kunt maken waarin meerdere servers verantwoordelijk zijn voor uw database. Configuratie hiervan is specialistenwerk en 4/6.1-24
Novell Netwerkoplossingen, aanvulling 32
Networking Services
daarom is dat onderwerp in deze algemene inleiding over MySQL niet echt op zijn plaats. De laatste optie Catalogs tot slot geeft toegang tot de inhoud van de databases. U kunt hier nieuwe tabellen in een database aanmaken en in de tabellen de verschillende kolommen beheren. Ook hier weer kunt u gevorderde opties toepassen, bijvoorbeeld indexeringsopties waarmee u de databases aanzienlijk sneller kunt maken. Neem bijvoorbeeld eens een kijkje in de tabeleditor om een idee te krijgen van de verschillende mogelijkheden die er zijn.
Via de optie Catalogs kunt u optimalisatietaken op uw databases uitvoeren.
4/6.1.6 Tot slot U hebt kennisgemaakt met het beheer van een MySQLomgeving. Met behulp van de informatie in dit hoofdstuk kunt u een eenvoudige MySQL-database op uw server aanmaken en onderhouden. Ook hebt u inzicht gekregen in wat nodig is om problemen op te lossen met MySQL-databases die gebruikt worden door verschillende services op uw computer, zoals teaming of file system versioning. Novell Netwerkoplossingen, aanvulling 32
4/6.1-25
Databaseservices
4/6.1-26
Novell Netwerkoplossingen, aanvulling 32