Databasen MySQL
Innledning
På stud kjøres det en MySQL-database. MySQL er en av de mest brukte og populære databasetjenerene, spesielt i web-sammenheng. På NTNU kan du nå MySQL på mysql.stud.ntnu.no. For nybegynnere kan det være greit å lære seg følgende begreper før man begynner å bruke databasetjeneren:
brukere: For å få tilgang til databasen må man ha en bruker. Man kan lage flere brukere. Brukere må ha samme brukernavn som en selv, eller være på formen brukernavn_etellerannet. (F.eks. johndoe, johndoe_web, johndoe_timeplan osv.) Vær oppmerksom på at et mysql-brukernavn maksimalt kan være på 16 tegn, dvs at dersom ditt brukernavn på stud er johndoe (7 tegn), har du kun 8 tegn tilgjengelig til den delen av navnet som du velger selv.
databaser: Hver bruker kan ha flere databaser. Man kan lage databaser med samme navn som brukernavnet, og/eller som begynner med brukernavn og en underscore. (F.eks. johndoe, johndoe_oppskrifter, johndoe_venner, osv.) Også her gjelder regelen om maksimalt 16 tegn i navnet.
tabeller: Hver database kan ha flere tabeller. Tabellene kan hete hva som helst, så lenge ikke to tabeller i samme database har samme navn.
I utgangspunktet må en ha spesielle rettigheter for å opprette en bruker og databaser. Derfor er det på stud to små programmer som en må bruke for å lage bruker, sette passord og rettigheter, samt for opprette selve databasen. Dette er unix-programvare og finnes bl.a. på login.stud.ntnu.no og solarislogin.stud.ntnu.no.
Et eksempel
La oss si at jeg skal lage en database over vennene mine og deres telefonnummer. Det første jeg må gjøre er å lage en databasebruker. Jeg kaller denne 'knutpett_demo'. Pass på at du bruker navnereglene som er beskrevet under "brukere" i det forrige avsnittet.
[knutpett@jeeves (13) ~ ]$ mysql-useradm create knutpett_demo [knutpett@jeeves (14) ~ ]$ mysql-useradm show User 'knutpett_demo': no password set.
Så må jeg huske å sette passord på brukeren. Merk at passord ikke kan være lengre enn 8 tegn. Passordet bør kun gjelde for mysql, spesielt dersom du ønsker å bruke den relaterte brukeren i web-sammengeng på NTNU. Filer som lagres i din public_html mappe vil være lesbare for alle brukere ved NTNU.
[knutpett@jeeves (16) ~ ]$ mysql-useradm passwd knutpett_demo New MySQL password for user 'knutpett_demo': Retype new MySQL password for user 'knutpett_demo': Password updated for user 'knutpett_demo'.
Nå kan jeg lage selve databasen:
[knutpett@jeeves (22) ~ ]$ mysql-dbadm create knutpett_venner Database 'knutpett_venner' created.
Før jeg kan begynne å bruke databsen, må jeg huske å sette rettigheter:
[knutpett@jeeves (25) ~ ]$ mysql-dbadm show knutpett_venner Database 'knutpett_venner': # User Select Insert Update Delete Create Drop Alter Index Temp Lock # ---------------- ------ ------ ------ ------ ------ ------ ----- ----- ---- ----- # (no permissions currently granted to any users)
Her ser vi at det ikke er satt noen rettigheter enda.
[knutpett@jeeves (30) ~ ]$ mysql-dbadm editperm knutpett_venner
Så startes yndlingseditoren opp ($EDITOR) og man fyller inn ønskede rettigheter. Etter å ha lagt inn det, velg lagre. Merk at du ikke skal velge filnavn og lagre som. Resultatet mitt ble slik:
Database 'knutpett_venner': # User Select Insert Update Delete Create Drop Alter Index Temp Lock # ---------------- ------ ------ ------ ------ ------ ------ ----- ----- ---- ---- knutpett_demo Y Y Y Y Y Y Y Y Y Y
Nå er vi klar til å lage selve databasen:
[knutpett@jeeves (33) ~ ]$ mysql -A -h mysql.stud.ntnu.no -u knutpett_demo -p knutpett_venner
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 217293 to server version: 3.22.22 Type 'help' for help.
mysql> CREATE TABLE venner (
-> id int unsigned AUTO_INCREMENT NOT NULL,
-> fornavn varchar(255),
-> etternavn varchar(255),
-> tlf int(20),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (1.27 sec)
mysql> insert into venner (fornavn,etternavn,tlf) values ('John','Doe',73591500);
Query OK, 1 row affected (1.72 sec)
mysql> select * from venner;
+----+---------+-----------+----------+
| id | fornavn | etternavn | tlf |
+----+---------+-----------+----------+
| 1 | John | Doe | 73591500 |
+----+---------+-----------+----------+
1 row in set (0.06 sec)
Hvordan bruke databasen via PHP
PHP har egne funksjoner for å aksessere MySQL-databaser. Her er et eksempel:
<?php
$db = mysql_connect("mysql.stud.ntnu.no", "knutpett_demo","troll");
mysql_select_db("knutpett_venner",$db);
$result = mysql_query("SELECT * FROM venner",$db);
printf("Fornavn: %s<br>\n", mysql_result($result,0,"fornavn"));
printf("Etternavn: %s<br>\n", mysql_result($result,0,"etternavn"));
printf("Tlf: %s<br>\n", mysql_result($result,0,"tlf"));
?>
Hvordan bruke databasen via Perl
Her er et lite eksempel på hvordan man kan bruke databsen v.h.a. Perl.
#!/store/bin/perl -w
use Mysql;
use strict;
use POSIX qw(locale_h);
my $dbh = Mysql->connect("mysql", "knutpett_venner","knutpett_demo","troll");
my $sth = $dbh->query("select * from venner");
my $i=0;
while (my @arr = $sth->fetchrow) {
my ($id,$fornavn,$etternavn,$tlf) = @arr;
print "$id - $fornavn - $etternavn - $tlf\n";
}
Ansatte
Ansatte skal kunne bruke mysql på samme måte som studenter. Eneste avvik er at mysql.ansatt.ntnu.no brukes alle plasser der en student ville brukt mysql.stud.ntnu.no.
studorg-er
Man kan kun lage databaser og brukere for vanlige brukere, samt databaser som starter med navnet på studorgen. Hvis man ønsker å bruke MySQL i studorgsammenheng kan man altså lage en database som heter for eksempel dans_test hvis man er medlem av denne gruppen. Deretter gir man en eksisterende (personlig) databasebruker tilgang ved hjelp av mysql-dbadm editperm dans_test. Alle medlemmene av en studorg kan gi seg selv tilgang til en database knyttet til studorgen på denne måten.
Grafisk grensesnitt
Om du ønsker å bruke et grafisk grensesnitt for og editere databasen etter den er laget kan du bruke phpMyAdmin på ITEA. Her logger du inn med brukernavnet og passordet du laget med mysql-useradm, og databasenavnet du laget med mysql-dbadm.
Comments
| Languages: | Comments: | 1 | Aid: | 83 | User rating: |
|
|
| Last updated: | 2007-06-19 | Author: | brendas | Read: | 26067 times |