www.ntnu.no *
INFOWEB >  utvikling og programmering >  database  > Databasen MySQL
Tasks
You may add comments
Or e-mail this article
Read articles written by brendas
User rating
How much did this article help you?
Much Some Little
Print preview
You do not need a 'printer-friendly page' to print this page. Here's why
Contents

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.

konsoll #1
[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.

konsoll #2
[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:

konsoll #3
[knutpett@jeeves (22) ~ ]$ mysql-dbadm create knutpett_venner
Database 'knutpett_venner' created.

Før jeg kan begynne å bruke databsen, må jeg huske å sette rettigheter:

konsoll #4
[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.

konsoll #5
[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:

konsoll #6
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:

konsoll #7
[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:

kode #1
<?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.

konsoll #8
#!/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

Add

John Doe -- 2003-01-26
anbefales: http://www.devshed.com/Server_Side/MySQL/Intro/page2.html

Languages: no flag_en Comments: 1 Aid: 83 User rating:
 
 
Last updated: 2007-06-19 Author: brendas Read: 26067 times