Brukere
Personer får tildelt tre MySQL-brukere:
<brukernavn>_r@<host>
<brukernavn>_rw@<host>
<brukernavn>_adm@<host>
Det vil også bli opprettet enkelte rollebrukere, f.eks. en bruker for webserveren, en for phpMyAdmin, e.l. Disse gis navn på tilsvarende form: <foobar>_r/<foobar>_rw/<foobar>_adm.
Host-begrensning
MySQL-brukere er ikke definert med bare et brukernavn, men med kombinasjonen av brukernavn og et hostmønster (<host> i denne dokumentasjonen), som begrenser hvilke maskiner brukeren kan koble til fra.
Per default oppretter vi MySQL-brukerne for tilgang fra maskiner under idi.ntnu.no (i GRANT-syntax: %.idi.ntnu.no). Ved spesielle behov bør vi kunne åpne eller sperre utover dette.
Databasetilgang fra webserver/PHP-script
Et vanlig use-case er at folk vil bruke en database fra PHP-script. For å unngå å ha databasepassord liggende i filer som er lesbare for alle, kan vi utnytte revers-proxyen (Pound) til å tilby databasetilgang uten synlige passord. De grumsete detaljene kommer på en egen Kilden-side etterhvert, men implikasjonen på MySQL-nivå blir at det opprettes MySQL-brukere på formen <brukernavn>_www@<webhoster>, som brukeren så kan velge å gi tilgang til sine databaser.
Tilgangskontroll
MySQL-brukere gis eksplisitt tilgang til enkeltdatabaser. Med unntak av adminbruker(e), skal MySQL-brukere ikke ha noen globale rettigheter overhodet.
MySQL-brukere på formen <brukernavn>_r@<host> gis lesetilgang (GRANT SELECT ON <database>.* ...).
MySQL-brukere på formen <brukernavn>_rw@<host> gis "vanlig" skrivetilgang (GRANT SELECT, INSERT, UPDATE, DELETE ON <database>.* ...).
MySQL-brukere på formen <brukernavn>_adm@<host> gis full tilgang, inkludert muligheten til å gi tilgang til andre (GRANT ALL, GRANT OPTION ON <database>.* ...).
Databaser
Databaser skal ha navn på formen <prefiks>_<suffix>, der prefikset brukes for å si noe om "eierskap":
<brukernavn>_<foobar>
<fagkode>_<foobar>
<gruppe>_<foobar>
Eksempler kan da være oyvindmo_gallery, tdt4100_forumdata og db_foobar.
Hver bruker skal selv kunne opprette databaser av den første typen ("personlige databaser"), mens de andre typene kun kan opprettes av databaseadministratorer.
Grensesnitt for administrasjon
- Web-grensesnitt mot brukere for å opprette/slette personlige databaser.
- Kommandolinje- og web-grensesnitt mot databaseadministrator for å opprette/slette vilkårlige databaser, og å administrere tilgangsrettigheter.
- phpMyAdmin må konfigureres/patches til å enten håndheve databasenavngiving eller hindre databaseoppretting.
Backup
Jevnlig, anslagsvis hver natt, kjøres det mysqldump av hver database til separate, daterte filer.
Vi kan gjøre diff for å fjerne identiske dumps, for det er antakelig mange databaser som ikke endrer seg hver dag.
Dumpene skal ikke være leselige for vanlige brukere, men for personlige databaser bør dumps gjøres tilgjengelig for brukeren på en eller annen måte (web-grensesnitt?), slik at de selv kan rulle tilbake dersom de har gjort noe galt og mistet data.