Passwort eines MariaDB-Nutzers zurücksetzen

Um sich mit einer MariaDB-Datenbank zu verbinden wird ein Nutzer und ein Passwort benötigt. Wenn das Passwort verloren gegangen ist, ist dies allerdings kein Beinbruch, solange es sich um die eigene Installation handelt. In diesem Fall kann das Passwort einfach auf der Konsole zurückgesetzt werden. Dazu muss sich per SSH auf dem entsprechenden Server eingeloggt werden und dort das mysql-Tool mit dem Nutzer root gestartet werden:

mysql -u root

Nachdem dies geschehen ist, wird in der Kommandozeile auf die Tabelle mysql geschwenkt:

use mysql;

In dieser Tabelle finden sich die Verwaltungsdaten des Datenbanksystems. Über diese Tabelle ist es nun möglich den Nutzer mit einem neuen Passwort zu versehen:

update user set password=PASSWORD("geheim123") where User='username';
flush privileges;

Damit ist das Passwort für den entsprechenden Nutzer zurückgesetzt und das mysql-Tool kann mittels:

exit

verlassen werden. Anschließend kann der Nutzer mit dem neuen Passwort genutzt werden.

Text unter MySQL ersetzen

In einer MySQL-Datenbank ändert man selten viele Daten auf einmal. Allerdings kommt dies trotz allem ab und an vor. Ein solcher Anwendungsfall wäre z.B. die Änderung einer Zeichenkette innerhalb einer Tabelle. Für MySQL gibt es hierfür die SQL-Funktion REPLACE, welche dies ermöglicht. Im Beispiel könnte das so aussehen:

UPDATE names SET forename = REPLACE(forename, 'Anja', 'Anne')

In diesem Beispiel wird in der Tabelle names das Feld forename bearbeitet. Dabei wird jedes Auftreten von Anja durch Anne ersetzt.

Freie Ticketsysteme auf PHP-Basis

Issue-Tracking-System oder auch Helpdesk-Systeme gibt es wie Sand am Meer. Allerdings gibt es relativ wenige frei lizenzierte Systeme auf PHP/MySQL Basis. Eines dieser Systeme ist eTicket, welches unter eticketsupport.com zu finden ist. Nachteilig an eTicket ist, das dieses Systemen nicht bzw. nur noch sporadisch weiterentwickelt wird.

osticket.com

osticket.com

Hier punktet osTicket, welches über die offizielle Seite bezogen werden kann. Das System befindet sich in aktiver Entwicklung und wird von Enhancesoft betreut. Enhancesoft bietet dabei auch das Cloudhosting von osTicket an. Der Quelltext des unter der GPL2 lizenzierten Systems ist auf GitHub zu finden.

Primärschlüssel unter MySQL neu durchnummerieren

In einer Datenbanktabelle verfügt man im Normalfall über ein Feld, welches als Primärschlüssel fungiert. Dieses Feld ist dabei in den meisten Fällen als Integer mit einer Autoinkrement-Funktion ausgelegt. Unter Umständen kann es passieren, das man diese ID neu von 1 an vergeben möchten, also ein sogenanntes Renumbering durchführen möchte. Mittels SQL kann man das ganze dabei wie folgt erreichen:

SET @a = 0;
UPDATE tabellenName SET ID = (@a := @a +1);
ALTER TABLE tabellenName  AUTO_INCREMENT = 1;

Bei der Ausführung dieser Befehle wird das Feld ID ab 1 neu durchnummeriert und der Autoinkrement-Index auf den entsprechenden Wert gesetzt.

MySQL Improved Extension

Wenn man früher unter PHP eine MySQL-Datenbank ansprechen wollte, so bediente man sich der Befehle mysql_connect, mysql_select_db, mysql_query und Co. Das Problem an dieser API ist, das sie deprecated also veraltet ist und damit nicht mehr genutzt werden sollte:

$db = mysql_connect ($host, $user, $password) or die ("Es konnte keine Verbindung zum Datenbankserver hergestellt werden");
mysql_query("SET NAMES 'UTF8'");
mysql_select_db ($name, $db) or die("Die Datenbank \"$name\" konnte nicht ausgewählt werden");

Stattdessen soll man die MySQL Improved Extension kurz Mysqli nutzen. Dabei handelt es sich um eine moderne objektorientierte API für den Zugriff auf MySQL in PHP. Eine einfache Abfrage mittels Mysqli sieht dabei wie folgt aus:

$mysqli = new mysqli($databaseHost, $databaseUsername, $databasePassword, $databaseName);
$sql = "SELECT * FROM token";
$result = $mysqli->query($sql);

for ($row_no=$result->num_rows-1; $row_no>=0; $row_no--) 
{
    $result->data_seek($row_no);
    $row=$result->fetch_assoc();
    echo " id = " . $row['id'] . "\n";
}

Die API unterscheidet sich dabei nicht groß von der alten API, so das Umstieg hier relativ einfach fallen sollte. Auf der entsprechenden Dokumentationsseite auf php.net finden sich noch viele weitere Beispiele.