<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=MariaDB%3A_Root-Passwort_und_Systemtabellen_im_Container_wiederherstellen</id>
	<title>MariaDB: Root-Passwort und Systemtabellen im Container wiederherstellen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=MariaDB%3A_Root-Passwort_und_Systemtabellen_im_Container_wiederherstellen"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=MariaDB:_Root-Passwort_und_Systemtabellen_im_Container_wiederherstellen&amp;action=history"/>
	<updated>2026-06-29T23:26:47Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=MariaDB:_Root-Passwort_und_Systemtabellen_im_Container_wiederherstellen&amp;diff=61676&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „== Zielbeschreibung == * Wiederherstellung des MariaDB-'''root'''-Zugangs in einem '''Docker-Container''' * Nutzung von '''mariadbd --skip-grant-tables''' im C…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=MariaDB:_Root-Passwort_und_Systemtabellen_im_Container_wiederherstellen&amp;diff=61676&amp;oldid=prev"/>
		<updated>2025-04-13T19:32:57Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „== Zielbeschreibung == * Wiederherstellung des MariaDB-&amp;#039;&amp;#039;&amp;#039;root&amp;#039;&amp;#039;&amp;#039;-Zugangs in einem &amp;#039;&amp;#039;&amp;#039;Docker-Container&amp;#039;&amp;#039;&amp;#039; * Nutzung von &amp;#039;&amp;#039;&amp;#039;mariadbd --skip-grant-tables&amp;#039;&amp;#039;&amp;#039; im C…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Zielbeschreibung ==&lt;br /&gt;
* Wiederherstellung des MariaDB-'''root'''-Zugangs in einem '''Docker-Container'''&lt;br /&gt;
* Nutzung von '''mariadbd --skip-grant-tables''' im Container&lt;br /&gt;
* Korrektur der Systemtabelle '''mysql.column_stats''', falls nach einem Upgrade Fehler auftreten&lt;br /&gt;
&lt;br /&gt;
== Problemstellung ==&lt;br /&gt;
* Zugriff auf MariaDB als '''root''' nicht mehr möglich&lt;br /&gt;
* Systemtabelle '''mysql.column_stats''' wirft bei aktuellen Versionen (ab 10.6+) beim Start Fehlermeldungen&lt;br /&gt;
* Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR 1045 (28000): Access denied for user 'root'@'localhost'&lt;br /&gt;
ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement&lt;br /&gt;
Incorrect definition of table mysql.column_stats: expected column 'histogram' at position 10 to have type longblob, found type varbinary(255)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vorbereitungen ==&lt;br /&gt;
; Container mit interaktivem Bash-Zugriff starten:&lt;br /&gt;
*docker run --rm -it -v ./database:/var/lib/mysql mariadb bash&lt;br /&gt;
&lt;br /&gt;
; Socket-Verzeichnis anlegen und Rechte setzen:&lt;br /&gt;
*mkdir -p /run/mysqld&lt;br /&gt;
*chown -R mysql:mysql /run/mysqld&lt;br /&gt;
&lt;br /&gt;
== Start im Recovery-Modus ==&lt;br /&gt;
; MariaDB als Benutzer '''mysql''' ohne Authentifizierung starten:&lt;br /&gt;
*su mysql -c &amp;quot;mariadbd --skip-grant-tables --socket=/run/mysqld/mysqld.sock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Terminal offen lassen – der Server läuft im Vordergrund&lt;br /&gt;
&lt;br /&gt;
== Passwort zurücksetzen (in zweitem Terminal) ==&lt;br /&gt;
; Verbindung über den Unix-Socket aufbauen:&lt;br /&gt;
*docker exec -it &amp;lt;CONTAINER-ID&amp;gt; mariadb --socket=/run/mysqld/mysqld.sock&lt;br /&gt;
&lt;br /&gt;
; Passwort und Plugin in '''mysql.global_priv''' setzen (ab MariaDB 10.4):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE mysql.global_priv SET priv=json_set(priv, '$.plugin', 'mysql_native_password', '$.authentication_string', PASSWORD('123Start$')) WHERE User='root';&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Hinweis: ''ALTER USER'' funktioniert nicht im Skip-Modus.&lt;br /&gt;
&lt;br /&gt;
== Systemtabelle column_stats korrigieren ==&lt;br /&gt;
; MariaDB erwartet in aktuellen Versionen:&lt;br /&gt;
*Spalte '''hist_type''' als '''enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB')'''&lt;br /&gt;
*Spalte '''histogram''' als '''longblob'''&lt;br /&gt;
&lt;br /&gt;
; Tabelle anpassen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
USE mysql;&lt;br /&gt;
ALTER TABLE column_stats MODIFY histogram longblob;&lt;br /&gt;
ALTER TABLE column_stats MODIFY hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Abschließen ==&lt;br /&gt;
; Im ersten Terminal mit '''Strg+C''' den Server beenden&lt;br /&gt;
&lt;br /&gt;
; Jetzt ist ein regulärer Start mit gültigem Root-Passwort möglich:&lt;br /&gt;
*docker run --rm -it -v ./database:/var/lib/mysql mariadb mariadb -uroot -p123Start$&lt;br /&gt;
&lt;br /&gt;
== Empfehlung für docker-compose.yml ==&lt;br /&gt;
; Festes Root-Passwort setzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
environment:&lt;br /&gt;
  MYSQL_ROOT_PASSWORD: 123Start$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Zufällig generiertes Passwort vermeiden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# MYSQL_RANDOM_ROOT_PASSWORD: 'yes'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
Mit dieser Methode kann ein MariaDB-Container bei verlorenem Passwort und inkonsistenter Systemtabellenstruktur sicher repariert werden. Der Socket-basierte Zugriff erlaubt eine lokale Authentifizierung auch ohne TCP oder funktionierenden Benutzerzugang.&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>