MYSQLPASSWORDHASH.PY(1)

NAAM
mysqlpasswordhash.py - genereer MySQL wachtwoord verhaspelingen

SAMENVATTING
mysqlpasswordhash.py --create-user-statement|--set-password-statement|--user-clause|--grant-usage-on= DATABASE [-H MACHINE] -u GEDRUIKER -p WACHTWOORD
mysqlpasswordhash.py --create-user-statement|--set-password-statement|--user-clause|--grant-usage-on= DATABASE -d TOELATINGSBESTAND
mysqlpasswordhash.py -s SQL_BESTAND
mysqlpasswordhash.py [-p] WACHTWOORD
mysqlpasswordhash.py -a
mysqlpasswordhash.py -h
mysqlpasswordhash.py -v

BESCHRIJVING
mysqlpasswordhash.py Berekent de verhaspeling die MySQL gebruikt voor wachtwoorden sinds versie 4.1. U kunt de uitvoer gebruiken in een (gegenereerd) SQL script of het direct doorsturen naar het programma "mysql". Het gebruik van verhaspelingen voorkomt dat wachtwoorden als leesbare tekst worden weggeschreven in de MySQL query log of als leesbare tekst wordt verstuurd over een netwerk.

OPTIES

-a, --ask-password
    Vraagt om een wachtwoord. Dit is de snelste manier om een verhaspeling uit te rekenen zonder risico dat het wachtwoord wordt gelogd of leesbaar over een netwerk wordt verstuurd.

--create-user-statement
    Bouwt een compleet CREATE USER commando.

-d TOELATINGSBESTAND, --defaults-file TOELATINGSBESTAND, --defaults-extra-file TOELATINGSBESTAND
    Leest de machine, de gebruiker en het wachtwoord uit TOELATINGSBESTAND. Zo'n bestand wordt vaak gebruikt om niet-interactieve programma's met MySQL te kunnen laten verbinden. Dit bestand moet een een configuratiebestand zijn in het "ini" formaat met velden "user" (gebruikersnaam), "password" (wachtwoord) en eventueel "host" (machine) in sectie "mysql" of in sectie "client".

--grant-usage-on DATABASE
    Bouwt een GRANT commando voor het gebruik van de gegeven DATABASE.

-h, --help
    Toont een gebruikershandleiding en doet verder niets.

-H MACHINE, --host MACHINE
    Machine naam of netwerk adres. Mag jokertekens bevatten, zoals '10.77.77.%'. Standaardwaarde is localhost (hetgeen niet hetzelfde is als 127.0.0.1 in MySQL). Als de machine zowel in een toelatingsbestand als op de commandoregel is gegeven, wordt de waarde van de commandoregel gebruikt. Dit maakt het mogelijk om jokertekens te gebruiken.

-p WACHTWOORD, --password WACHTWOORD
    Geef het wachtwoord op de commandoregel. WAARSCHUWING: commandoregels worden vaak gelogd in een geschiedenis-bestand als ze niet vanuit een script worden aangeroepen.

-s SQL_SCRIPT, --script SQL_SCRIPT
    Deze optie vervangt alle formuleringen met wachtwoorden in SQL_SCRIPT door formuleringen die verhaspelingen gebruiken en geeft het gemodificeerde script als uitvoer. Om precies te zijn worden de clausules "IDENTIFIED BY '...'" en "PASSWORD('...')" vervangen door causules die verhaspelingen gebruiken. Als de bestandsnaam een streepje (-) is, wordt stdin gebruikt.

--set-password-statement
    Bouwt een compleet SET PASSWORD commando.

-u USER, --user USER
    De gebruikersnaam voor gebruik in SQL.

--user-clause
    Bouwt een complete gebruikersclausule in de vorm 'GEBRUIKER'@'MACHINE' IDENTIFIED BY PASSWORD 'VERHASPELING'.

-v, --version
    Toont het versienummer van het programma en doet verder niets.

VOORBEELDEN

Toelatingsbestanden
    Als dit toelatingsbestand gegeven is: (credentials.cnf:)
    [client]
    host = localhost
    user = build
    password = "Let's do it!" Wordt het SQL commando om een gebruiker voor database SomeDB rechten te geven gegenereerd met het volgende commando: mysqlpasswordhash.py -d credentials.cnf --grant-usage-on=SomeDB waarvan de uitvoer naar een SQL bestand kan worden gestuurd of direct naar het programma "mysql". Hieraan kunnen dan GRANT commando's worden toegevoegd die naar dezelfde gebruiker verwijzen maar geen wachtwoord meer definiëren. Het omgekeerde is ook mogelijk: maak een SQL script met alle GRANT commando's voor de gebruiker, zonder IDENTIFIED BY clausules, en voeg daar de uitvoer van het volgende commando aan toe om het wachtwoord in te stellen voor deze gebruiker: mysqlpasswordhash.py -d credentials.cnf --set-password Als alternatief kan ook sed(1) worden gebruikt om een GRANT USAGE commando in het eerste voorbeeld om te vormen in een ander GRANT commando. Gebruik bijvoorbeeld om leestoegang op de gehele database toe te staan: mysqlpasswordhash.py -d credentials.cnf --grant-usage-on=SomeDB | sed 's/USAGE/SELECT/'

Andere bestandsformaten en gebruik op de commandoregel
    De eenvoudigste aanroep toont alleen de verhaspeling: mysqlpasswordhash.py -p "Let's do it!" Wees er beducht op dat commando's op de commandoregel kunnen worden gelogd in geschiedenisbestanden. Één manier om dit te voorkomen is om het wachtwoord interactief in te voeren met: mysqlpasswordhash.py -a Met behulp van grep(1) en sed(1) kunnen de benodigde gegevens ook uit andere bestanden worden gehaald. Als bijvoorbeeld dit PHP instellingenbestand gegeven is: (settings.php:)
    <?php
    $GLOBALS['DatabaseServer'] = 'localhost';
    $GLOBALS['DatabaseUser'] = 'build';
    $GLOBALS['DatabasePassword'] = 'Let\'s do it!';
    $GLOBALS['DatabaseName'] = 'AppDb';
    ?> En een SQL bestand met GRANT commando's zonder IDENTIFIED BY clausules, zou het volledige GRANT script kunnen worden gegenereerd met een batch-bestand zoals: #!/bin/bash
    SETTINGSFILE="$1"
    GRANTSFILE="$2"
    function Setting # setting_name
            {
             grep -e "^\$GLOBALS\[.$1.\][ ]*=" $SETTINGSFILE | sed "s/^[^=]*=[ ]*['\"]//" | sed "s/['\"]\?;.*//"
            }
    mysqlpasswordhash.py -H "`Setting DatabaseServer`" -u "`Setting DatabaseUser`" -p "`Setting DatabasePassword`" --grant-usage-on "`Setting DatabaseName`" | cat - "$GRANTSFILE"

Gebruik met SQL scripts:
    mysqlpasswordhash.py -s grants.sql of mysqlpasswordhash.py -s - < grants.sql Deze aanroepen doorzoeken het script naar de clausules IDENTIFIED BY 'wachtwoord' en PASSWORD('wachtwoord'). Deze clausules worden dan vertaald naar versies met verhaspelingen.

ZIE OOK
grep(1), mysql(1), sed(1) Zie http://www.howtoforge.com/node/4833 voor herhaalbare MySQL scripts en voor modulaire SQL.

COPYRIGHT
Zowel het programma mysqlpasswordhash.py als deze documentatie zijn openbaar bezit. Er kunnen geen beperkingen worden gesteld aan verspreiding, verveelvuldiging of gebruik.

AUTEUR
mysqlpasswordhash.py is geschreven door Willem Bogaerts <mysqlpasswordhash@w-p.dds.nl>