MySQL manager

Command-line client for MySQL database and user administration (in PHP).

Dieses Werkzeug ermöglicht das Verwalten von Benutzern, Datenbanken und Zugriffsberechtigungen auf einem MySQL-Datenbankserver von der Kommandozeile. Du brauchst keine grafische Benutzerschnittstelle wie MySQL Workbench oder phpMyAdmin für diese einfache Aufgabe. Das ist besonders interessant für automatisierte Routinen wie das Einrichten einer Anwendung oder als Backend-Skript für eine Web-Oberfläche, um Benutzer ihre eigenen Datenbanken verwalten zu lassen. Dieses Skript ist zusammen mit einem kleinen Sicherheits-Wrapper im Kunden-Login bei dotforward Webhosting im Einsatz. Hier sind ein paar Anwendungsbeispiele:

  • Neue Datenbank „db1“ erstellen:
    mysqlmgr add database db1
  • Neuen Benutzer „alice“ anlegen, Kennwort interaktiv abfragen und Lesezugriff auf die erstellte Datenbank gewähren:
    mysqlmgr -a add user alice
    mysqlmgr allow user alice all hosts database db1 read
  • Neuen Benutzer „bob“ mit dem Kennwort als Argument anlegen:
    mysqlmgr add user bob password s3cr3t
  • „bob“ von allen Hosts aus Schreib- und Definitionszugriff auf die erstellte Datenbank gewähren:
    mysqlmgr allow user bob all hosts database db1 read write define
  • Alle Benutzer anzeigen:
    mysqlmgr list users
  • Alle Zugriffsrechte für Benutzer „bob“ anzeigen:
    mysqlmgr show user bob
  • Benutzer „bob“ in „chris“ umbenennen:
    mysqlmgr rename user bob to chris
  • „chris“ verbieten, neue Daten zu seiner Datenbank hinzuzufügen:
    mysqlmgr deny user chris all hosts database db1 insert update
  • MySQL-Version des Servers db7.company.com anzeigen:
    mysqlmgr -h db7.company.com version

Du kannst Benutzerkonten für unterschiedliche Hostnamen hinzufügen und bearbeiten. Wenn keiner angegeben ist, wird der Host „%“ verwendet, was „Verbindungen von allen Rechnern“ bedeutet. Wenn du ein Benutzerkonto bearbeitest, musst du denselben Hostnamen wie bei der Erstellung angeben. (Stell dir Benutzer- und Hostnamen als ein Paar vor, das das Benutzerkonto beschreibt.) Um alle Benutzerkonten mit einem bestimmten Benutzernamen zu verändern (also für Verbindungen von allen möglichen Rechnern), kannst du „all hosts“ angeben, was den Vorgang für alle vorhandenen Benutzerkonten durchführt. Wenn dich verschiedene Hostnamen nicht interessieren, kannst du diese Angabe immer weglassen.

Diese Verwaltungsbefehle werden über eine Superuser-Verbindung zum MySQL-Server gesendet. Das ist normalerweise der Benutzer „root“. Um das root-Kennwort, und den Servernamen (und Port) falls nicht-lokal, nicht immer eingeben zu müssen, kannst du diese Vorgaben am Anfang der Programmdatei eintragen. Die Vorgabe-Verbindungsparameter (außer dem Kennwort) werden im Hilfetext angezeigt.

Compatibility: PHP Version 5.0 or newer

Download

mysqlmgr.zip6.5 KiBKomprimierte Programmdatei

Usage notes

This application requires a PHP command line interpreter (CLI) of version 5.0 or newer, with MySQL support, in the path /usr/bin/php. With small modifications in the first line (#!) this script should be able to run on any platform supported by PHP, i. e. also Windows.

Open issues

  • Revoke all access rights on a deleted database (and table)
  • Support table-level access rights
  • Test and if necessary replace commandline arguments parser code (better version included in the archive)

Changes

2008Jul19
  • Print newline after asking for a password invisibly
2008Apr5
  • Make typing of the password invisible like it is in ‘su’ – Only supported on Linux! Other OS use the old method.
2006May3
  • Initial release

Licence and terms of use

This software is released under the terms of the simplified BSD licence. You can find the detailed terms and conditions in the download.

Statistic data

  • Created on 2006-01-05, updated on 2008-07-19.
  • Ca. 920 lines of code, estimated development costs: 920 - 3 700 €