Oracle kom nylig med en rekke oppdateringer til flere versjoner av MySQL. Mens 8.x-versjonene stort sett fikk bug- og sikkerhetsfikser, lanserte Oracle også MySQL 9.0 Innovation – med flere spennende nyheter. Det skriver Infoworld.
Oracle har lagt ut en oversikt over alt som er nytt i MySQL 9.0 her, men kort fortalt inkluderer det blant annet:
- JavaScript Stored Programs for å lagre og kjøre JavaScript-programmer på databaseserveren
- En ny vektor-datatype
- Fjerning av støtte for SHA-1
Lagre og kjør JavaScript
En av de største nyhetene i MySQL 9 Enterprise Edition er at databaseserveren nå støtter Javascript stored programs.
Det betyr at du kan skrive JavaScript-kode som lagres på databaseserveren, som du kan kalle fra et SQL-uttrykk. Du kan for eksempel opprette og lagre en JavaScript-funksjon slik:
CREATE FUNCTION gcd_js (a INT, b INT) RETURNS INT
LANGUAGE JAVASCRIPT AS $$
let [x, y] = [Math.abs(a), Math.abs(b)];
while(y) [x, y] = [y, x % y];
return x;
$$;
Og så kan du kalle den på denne måten:
SELECT col1, col2, gcd_js(col1,col2)
FROM my_table
WHERE gcd_js(col1, col2) > 1
ORDER BY gcd_js(col1, col2);
CREATE TABLE gcd_table
AS SELECT gcd_js(col1,col2)
FROM my_table;
Øystein Grøvlen og Farhan Tauheed i Oracle skrev før jul en fyldig bloggpost om fordelene ved å kunne lagre og kjøre JavaScript i databasen.
Blant fordelene de nevner er blant annet at du reduserer behovet for overføre data mellom klient og databaseserver – men kan gjøre mer lokalt på databaseserveren.
I blogginnlegget legges det også vekt på at det finnes veldig mange utviklere som behersker JavaScript, og at det kan være nyttig for bedrifter å kunne bruke disse utviklerne også til backendutvikling.
Koden kjører i et sikkert og isolert miljø; Oracle GraalVM. Ved å kjøre en en VM skal ikke eventuelt ondsinnet kode kunne kompromittere noe i MySQL-serveren utenfor VM-en den kjører i.
Fjerner usikker autentisering
Med MySQL 9.0 Innovation fjernes nå autentiserings-pluginen mysql_native_password. Denne har vært merket som "deprecated" og lastes ikke som standard i MySQL 8.4 LTS – men i 9.0 er den altså fjernet helt.
I et blogginnlegg skriver Oracles Frederic Descamps at mysql_native_password har blitt regnet for å være usikker sammenlignet med mer moderne autentiseringsmetoder – som caching_sha2_password, som er standard nå:
- Bruker en svak hashing-algoritme: mysql_native_password bruker SHA-1 til hashing, som ifølge Descamps regnes som svak og utsatt for enkelte typer kryptografiske angrep.
- Bruker ikke salt når den hasher passord. Det vil si at det ikke legges til tilfeldige data til passordet før hashing for å gjøre det vanskeligere for angripere å knekke passordet.
- Ingen iterasjoner: Sikrere hashingmetoder bruker mange iterasjoner av hashing-funksjonen for å gjøre brute-force-angrep mer tidkrevende å gjennomføre.
Du finner en oversikt over alle endringene her.