Wikier

Bruke MySQL ved NTNU

En introduksjon i oppretting og bruk av MySQL-databaser for studenter og ansatte.

English version: Using MySQL at NTNU

Ser du etter noe annet? Temaside om IT-hjelp | Sider merket database

På tjenerne til NTNU kjøres det en MySQL-database hver for studenter og ansatte. MySQL er en av de mest brukte og populære databasetjenerne, spesielt i web-sammenheng. På NTNU kan du nå MySQL på mysql.stud.ntnu.no for studenter og mysql.ansatt.ntnu.no for ansatte. Merk at når MySQL-databasen er opprettet godtar den kun tilkoblinger fra NTNU-nett eller via VPN. Nybegynnere vil ha nytte av å sette seg inn i konseptene før man begynner å bruke databasetjeneren. 

Konsepter

Bruker: For å få tilgang til en database må man ha en bruker. Man kan lage flere brukere, og samme bruker kan ha rettigheter i flere databaser. Brukere må ha samme brukernavn som en selv, eller være på formen brukernavn_noe. (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 er johndoe (7 tegn), har du kun 8 tegn tilgjengelig til den delen av navnet som du velger selv.

Database: Du kan ha flere databaser. Man kan lage databaser med samme navn som brukernavnet,og/eller som begynner med brukernavn og en understrek. (F.eks. johndoe, johndoe_oppskrifter, johndoe_venner, osv.) Også her gjelder regelen om maksimalt 16 tegn i navnet.

Tabell: Hver database kan ha flere tabeller. Tabellene kan hete hva som helst, så lenge ikke to tabeller i samme database har samme navn. Tabellene huser de faktiske dataene i databasen.

Rettigheter: Brukere har rettigheter til å utføre forskjellige handlinger i en database. Etter at en bruker er lagt til i en database, gir man dem rettigheter slik at de kan utføre handlingene vi ønsker.

Fremgangsmåte

Før vi begynner

Husk å erstatte brukernavn med ditt eget NTNU-brukernavn i veiledningen under.

Studenter bruker:

  • brukernavn@login.stud.ntnu.no
  • mysql.stud.ntnu.no

Ansatte bruker:

  • brukernavn@login.ansatt.ntnu.no
  • mysql.ansatt.ntnu.no

Videre i veiledningen antar vi at du er student, husk å bytte ut «stud» med «ansatt» dersom du er ansatt.

Koble til med SSH

I utgangspunktet må en ha spesielle rettigheter for å opprette bruker og database. Derfor er det på tjenerne to små programmer (mysql-useradm og mysql-dbadm) som brukes for å lage bruker, sette passord og rettigheter, samt for å opprette selve databasen. Dette er Unix-programvare som du når ved å gå til login.stud.ntnu.no eller login.ansatt.ntnu.no med SSH. Du logger inn med din NTNU-bruker som vist under.

  1. Det første vi må gjøre er å åpne en terminal. Mac og Windows bruker forskjellige terminal-applikasjoner, men resten av veiledningen er identisk for begge.
    1. Mac: Åpne applikasjonen: Terminal
      (Trykk på cmd+mellomrom og søk etter «terminal»)
    2. Windows: Åpne applikasjonen: Cmd
      (Trykk på Windows-knappen og søk etter «cmd»)  
  2. Skriv inn og kjør kommandoen: ssh brukernavn@login.stud.ntnu.no
  3. Skriv inn ditt NTNU-passord og trykk Enter.
    Merk: Det vil ikke dukke opp noe når du skriver inn passordet ditt.
    Skjermbilde av terminalvinduet der kommandoene i trinn 2 og 3 er kjørt

Opprett din MySQL-databasebruker

Ett MySQL-brukernavn kan maksimalt være på 16 tegn. Dersom ditt NTNU-brukernavn er brukernavn (10 tegn + 1 understrek), har du kun 5 tegn tilgjengelig til den delen av navnet som du velger selv.

Veiledningen under demonstrerer hvordan du kan opprette en bruker som vi kaller «brukernavn_user1». Erstatt brukernavn med ditt eget NTNU-brukernavn og «user1» med noe du velger selv. Pass på 16-tegnsgrensen.

  1. Skriv inn følgende i terminalen: mysql-useradm create brukernavn_user1
  2. Sjekk at din bruker ble opprettet ved å skrive inn: mysql-useradm show
  3. Sett et passord (maks 8 tegn) på din bruker ved å skrive inn: 
    mysql-useradm passwd brukernavn_user1
    Terminalvindu som viser resultat etter kjøring av kommandoene i trinn 1, 2 og 3

Merk:

  • Passordet kan ikke være lengre enn 8 tegn.
  • Passordet bør kun gjelde for MySQL, spesielt dersom du ønsker å bruke den relaterte brukeren i web-sammenheng på NTNU. Filer som lagres i din public_html-mappe vil være lesbare for alle brukere ved NTNU.

Lag en database

Oppretting av databaser gjøres med administrasjonsverktøyet mysql-dbadm som lar deg opprette og slette databaser, samt redigere rettigheter til databasen din. Nå skal vi lage en database som vi kaller brukernavn_datab. Husk at 16-tegns grensen også gjelder her. Bytt ut «datab» med noe som passer deg.

  1. Skriv inn: mysql-dbadm create brukernavn_datab
    Skjermbilde av terminalen som viser at vi fikk laget en database ved å kjøre kommandoen i trinn 1

Sette rettigheter til databasen

Før vi kan begynne å bruke databasen, må vi huske å tildele den en bruker og sette brukerens rettigheter.

  1. Først sjekker vi de nåværende rettighetene til databasen med kommandoen: 
    mysql-dbadm show brukernavn_datab
     Skjermbilde av terminalvindu etter kjøring av kommandoen i trinn 1, viser at ingen brukere har rettigheter til databasen for øyeblikket
  2. Her ser vi at vi ikke har satt noen rettigheter enda. Dette gjør vi i et tekstredigerings-vindu som åpnes i terminalen. Standard teksteditor er VIM, men denne kan være lite brukervennlig i begynnelsen så vi bruker heller Nano.
    Bytt til Nano ved å skrive inn kommandoen: export EDITOR="/usr/bin/nano"
  3. Deretter åpner vi tekstredigerings-vinduet i terminalen ved å kjøre kommandoen:
    mysql-dbadm editperm brukernavn_datab
  4. Nå som vi har åpnet et tekstredigeringsvindu i terminalen vår, kan vi sette rettigheter ved å navigere til linjen der det står «# (no permissions currently granted to any user)» og slette denne (se bilde under).
  5. Fyll inn som vist på bildet; «brukernavn_user1» under User, trykk deretter Tab og fyll in Y i hver rettighets-kolonne, trykk Tab for å hoppe fra en kolonne til neste. 
    Dersom du for eksempel vil at en bruker ikke skal ha Delete-rettigheter skriver du N i denne kolonnen, i dette eksempelet gir vi brukeren vår alle rettigheter, og skriver derfor Y under alle.
    Skjermbilde av teksteditoren i terminalen hvor vi har skrevet inn databasebrukernavnet og satt rettigheter ved å skrive Y  
  6. Trykk på ctrl + X for å gå ut, deretter Y for å lagre og så Enter
  7. Sjekk at endringene gikk gjennom ved å vise rettighetene til databasen på nytt med kommandoen: mysql-dbadm show brukernavn_datab

    Slik vil et riktig resultat se ut i dette tilfellet:
    Bildet viser at vi nå har fått lagt inn vår bruker og satt dens rettigheter

Lag en tabell og sett inn data

Nå er vi klar til å bygge innholdet i databasen ved å lage en tabell og fylle inn data i denne. Her lager vi en tabell med oversikt over vennene våre og deres telefonnummer. 

PS: Alt vi gjør her kan også gjøres gjennom det grafiske grensesnittet phpMyAdmin.

  1. Først må vi koble til NTNU sin MySQL-server med vår nye MySQL-bruker og dens tilhørende passord og velge databasen vi har laget, dette gjør du ved å kjøre kommandoen:
    mysql -A -h mysql.stud.ntnu.no -u brukernavn_user1 -p brukernavn_datab
  2. Lim inn og kjør hele kommandoen under, denne vil opprette en tabell ved navn «venner» som har kolonnene «id, fornavn, etternavn, tlf», endre disse navnene og datatypene som det passer deg.

    CREATE TABLE venner (
    id int unsigned AUTO_INCREMENT NOT NULL,
    fornavn varchar(255),
    etternavn varchar(255),
    tlf int(20),
    PRIMARY KEY (id)
    );
  3. Nå har vi laget en tom tabell, du kan se en liste over alle tabellene i databasen din ved å kjøre kommandoen: SHOW TABLES;
  4. La oss nå fylle inn verdier i tabellen ved å kjøre kommandoen:
    INSERT INTO venner (fornavn, etternavn, tlf) VALUES ('John', 'Doe', 73591500);
  5. Om alt har gått bra kan vi nå sjekke tabellens innhold og se verdiene vi la inn:
    SELECT * FROM venner;
    Samlebilde som viser resultatet av kjøring av samtlige kommandoene i denne delen av veiledningen

Gratulerer, du har nå opprettet en database, en bruker med rettigheter til databasen og en tabell med innhold. 
Obs: MySQL-databasen godtar kun tilkoblinger fra NTNU-nett eller via VPN.

Databaser til Studorg-grupper

Når det kommer til Studorg-grupper kan det kun lages databaser og brukere for vanlige brukere, samt databaser som starter med navnet på Studorg-gruppen. Hvis man ønsker å bruke MySQL i Studorg-sammenheng 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 Studorg-gruppen på denne måten.

Les mer om studorg-grupper i artikkelen om Enkel samhandling.

Grafisk grensesnitt: phpMyAdmin

Om du ønsker å bruke et grafisk grensesnitt for å redigere databasen etter den er laget kan du bruke NTNU-IT sin phpMyAdmin. Her logger du inn med brukernavnet og passordet du laget med mysql-useradm, og databasenavnet du laget med mysql-dbadm.

Tips og triks

Hvordan bruke databasen via PHP

PHP har egne funksjoner for å aksessere MySQL-databaser. Her er et eksempel:

<?php
  $db = mysqli_connect("mysql.stud.ntnu.no", "johndoe_user1", "troll", "johndoe_datab");
  $result = mysqli_query($db, "SELECT * FROM venner");
  $row = mysqli_fetch_row($result);
  printf("Fornavn: %s<br>\n", $row[0]);
  printf("Etternavn: %s<br>\n", $row[1]);
  printf("Tlf: %s<br>\n", $row[2]);
?>

Hvordan bruke databasen via Perl

Her er et lite eksempel på hvordan man kan bruke databasen via Perl.

#!/usr/bin/perl
use strict;
use DBI;

my $db='databasenavn';
my $host='mysql.stud.ntnu.no';
my $user='brukernavn';
my $password='passord';

my $dbh = DBI->connect("DBI:mysql:$db:$host","$user", "$password",{PrintError => 0}) || die $DBI::errstr;

$dbh->do("SELECT 1 FROM FOO") or print $DBI::errstr;

Mer info om bruk av de to administrasjonsverktøyene:

Kjør kommandoene under :

  • mysql-useradm --help
  • mysql-dbadm --help

To typer passordkryptering

MySQL har to måter å kryptere passord på. De som ikke har byttet passord til sin databasebruker på veldig lang tid kan ha passordet kryptert på en gammeldags måte. Dette er ikke støttet av nyere klienter som PHP7, som blant annet brukes på folk.ntnu.no og org.ntnu.no. Hvis dette er tilfelle må du sette passord til din databasebruker på nytt. Det nye passordet blir kryptert med den moderne krypteringensmetoden.

Kontakt

Orakeltjenesten kan hjelpe deg hvis du støter på problemer. Ansatte må kontakte lokal IT-ansvarlig.