<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mise à niveau - Matteo Cisilino</title>
	<atom:link href="https://www.cisilino.com/fr/tag/mise-a-niveau/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.cisilino.com/fr/</link>
	<description>Guide su WordPress, server e sicurezza</description>
	<lastBuildDate>Thu, 29 Oct 2026 19:01:17 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>MySQL ne démarre plus après la mise à jour vers Debian 12 : cause et solution</title>
		<link>https://www.cisilino.com/fr/2026/10/13/mysql-ne-demarre-plus-debian-12/</link>
					<comments>https://www.cisilino.com/fr/2026/10/13/mysql-ne-demarre-plus-debian-12/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Tue, 13 Oct 2026 07:50:06 +0000</pubDate>
				<category><![CDATA[Serveurs et bases de données]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[mise à niveau]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=259</guid>

					<description><![CDATA[<p>Après la mise à jour vers Debian 12, MySQL ne démarre plus et les logs mentionnent mariadb.conf.d. Comment identifier la cause et la corriger sans toucher aux données.</p>
<p>The post <a href="https://www.cisilino.com/fr/2026/10/13/mysql-ne-demarre-plus-debian-12/">MySQL ne démarre plus après la mise à jour vers Debian 12 : cause et solution</a> first appeared on <a href="https://www.cisilino.com/fr/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">Le symptôme : mysql.service à l&rsquo;état failed</h2>
<p>Sous Debian 12, MySQL ne démarre plus. Le service apparaît en échec et le log signale l&rsquo;erreur <code>Can't read dir of '/etc/mysql/mariadb.conf.d/'</code>.</p>
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/mysql-ne-demarre-pas-debian-12.webp" alt="MySQL ne démarre plus : un cylindre de base de données avec un cercle d'avertissement orange à côté" width="1200" height="630"/></figure>
<p>Voici la sortie complète :</p>
<pre class="wp-block-code"><code># service mysql status
× mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; preset: enabled)
     Active: failed (Result: exit-code)
     Status: "Server startup in progress"

mysqld: Can't read dir of '/etc/mysql/mariadb.conf.d/' (OS errno 2 - No such file or directory)
mysqld: &#91;ERROR] Stopped processing the 'includedir' directive in file /etc/mysql/my.cnf at line 29.
mysqld: &#91;ERROR] Fatal error in defaults handling. Program aborted!
systemd&#91;1]: Failed to start mysql.service - MySQL Community Server.</code></pre>
<p>En vérifiant les paquets installés, MySQL est bien présent (paquets <code>mysql-community-server</code> 8.0 du dépôt officiel Oracle) :</p>
<pre class="wp-block-code"><code>dpkg -l | grep mysql</code></pre>
<h2 class="wp-block-heading">La cause : l&rsquo;alternative my.cnf pointe vers mariadb.cnf</h2>
<p>Sous Debian, le fichier <code>/etc/mysql/my.cnf</code> n&rsquo;est pas un vrai fichier. C&rsquo;est un lien géré par <strong>update-alternatives</strong>. Plusieurs paquets peuvent enregistrer leur propre version. En mode automatique, celle qui a la priorité la plus haute l&#8217;emporte.</p>
<p>Pendant la mise à jour, le paquet <strong>mariadb-common</strong> a été installé (puis retiré). Il enregistre <code>/etc/mysql/mariadb.cnf</code> avec une <strong>priorité de 500</strong>, supérieure à celle de <code>/etc/mysql/mysql.cnf</code> (priorité 300). Le paquet a été retiré mais pas entièrement purgé (état <code>rc</code>). Sa configuration est donc restée active. À la ligne 29 de ce fichier se trouve l&rsquo;inclusion de <code>/etc/mysql/mariadb.conf.d/</code>, un répertoire qui n&rsquo;existe pas. MySQL lit la configuration, ne trouve pas le répertoire et s&rsquo;arrête.</p>
<p><strong>Bonne nouvelle :</strong> les données dans <code>/var/lib/mysql</code> n&rsquo;ont pas été touchées. Ce n&rsquo;est qu&rsquo;un problème de configuration.</p>
<h2 class="wp-block-heading">Diagnostic : vérifier vers où pointe my.cnf</h2>
<pre class="wp-block-code"><code>ls -l /etc/mysql/my.cnf /etc/alternatives/my.cnf
update-alternatives --display my.cnf
sed -n '25,32p' /etc/mysql/my.cnf
dpkg -l | grep -i mariadb</code></pre>
<p>Si le problème est bien celui-ci, la sortie ressemblera à ceci :</p>
<pre class="wp-block-code"><code>/etc/alternatives/my.cnf -&gt; /etc/mysql/mariadb.cnf
/etc/mysql/my.cnf -&gt; /etc/alternatives/my.cnf

my.cnf - modalità automatica
  la versione migliore del collegamento è /etc/mysql/mariadb.cnf
  il collegamento attualmente punta a /etc/mysql/mariadb.cnf
/etc/mysql/mariadb.cnf - priorità 500
/etc/mysql/my.cnf.fallback - priorità 100
/etc/mysql/mysql.cnf - priorità 300

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

rc  mariadb-common   1:10.11.18-0+deb12u1   all   MariaDB common configuration files</code></pre>
<h2 class="wp-block-heading">Solution pas à pas</h2>
<h3 class="wp-block-heading">1. Sauvegarder la configuration</h3>
<pre class="wp-block-code"><code>cp -a /etc/mysql /root/etc-mysql-backup-$(date +%F)</code></pre>
<h3 class="wp-block-heading">2. Supprimer les résidus de mariadb-common</h3>
<p>La purge supprime <code>mariadb.cnf</code> et son entrée dans update-alternatives :</p>
<pre class="wp-block-code"><code>apt purge mariadb-common</code></pre>
<h3 class="wp-block-heading">3. Repointer my.cnf vers mysql.cnf</h3>
<pre class="wp-block-code"><code>update-alternatives --remove my.cnf /etc/mysql/mariadb.cnf 2&gt;/dev/null
update-alternatives --set my.cnf /etc/mysql/mysql.cnf</code></pre>
<h3 class="wp-block-heading">4. Vérifier la configuration</h3>
<pre class="wp-block-code"><code>update-alternatives --display my.cnf
cat /etc/mysql/my.cnf
my_print_defaults mysqld</code></pre>
<p>Désormais <code>my.cnf</code> doit pointer vers <code>/etc/mysql/mysql.cnf</code> et inclure <code>/etc/mysql/conf.d/</code> et <code>/etc/mysql/mysql.conf.d/</code>. Si <code>my_print_defaults mysqld</code> affiche les paramètres sans erreur, la configuration est correcte.</p>
<h3 class="wp-block-heading">5. Démarrer MySQL</h3>
<pre class="wp-block-code"><code>systemctl start mysql
systemctl status mysql
journalctl -u mysql -n 50 --no-pager</code></pre>
<h2 class="wp-block-heading">Si my.cnf n&rsquo;est pas un lien symbolique</h2>
<p>Si <code>/etc/mysql/my.cnf</code> est un fichier normal ou si <code>/etc/mysql/mysql.cnf</code> n&rsquo;existe pas, on peut recréer la configuration à la main :</p>
<pre class="wp-block-code"><code>mv /etc/mysql/my.cnf /etc/mysql/my.cnf.mariadb.bak
cat &gt; /etc/mysql/my.cnf &lt;&lt;'EOF'
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
EOF
mkdir -p /etc/mysql/conf.d
systemctl start mysql</code></pre>
<h2 class="wp-block-heading">Solution rapide quand MySQL ne démarre plus</h2>
<p>S&rsquo;il faut remettre la base en ligne tout de suite, créez le dossier manquant. Ce n&rsquo;est toutefois qu&rsquo;un pis-aller. MySQL continuerait à lire la configuration prévue pour MariaDB. Il vaut donc mieux appliquer la solution complète dès que possible.</p>
<pre class="wp-block-code"><code>mkdir /etc/mysql/mariadb.conf.d &amp;&amp; systemctl start mysql</code></pre>
<h2 class="wp-block-heading">Comment éviter que cela se reproduise</h2>
<p>Il est utile de comprendre quelle mise à jour a installé MariaDB, en consultant l&rsquo;historique d&rsquo;apt :</p>
<pre class="wp-block-code"><code>grep -i -B3 -A3 mariadb /var/log/apt/history.log*</code></pre>
<p>Pour empêcher <code>mariadb-common</code> d&rsquo;être réinstallé à l&rsquo;avenir, on peut le bloquer avec un pin APT à priorité négative :</p>
<pre class="wp-block-code"><code>cat &gt; /etc/apt/preferences.d/no-mariadb &lt;&lt;'EOF'
Package: mariadb-*
Pin: release *
Pin-Priority: -1
EOF</code></pre>
<p>Après chaque mise à jour importante, c&rsquo;est aussi une bonne habitude de vérifier l&rsquo;état de l&rsquo;alternative avec <code>update-alternatives --display my.cnf</code>.</p>
<p>Les <a href="https://www.debian.org/releases/bookworm/amd64/release-notes/" target="_blank" rel="noopener">notes de version de Debian 12</a> décrivent les changements de cette version.</p>
<p>Un autre piège de configuration à connaître : <a href="https://www.cisilino.com/fr/2026/10/17/mysql-5-7-docker-nftables-pare-feu/">MySQL 5.7 dans Docker et le port 3306 exposé</a>.</p>
<h2 class="wp-block-heading">Questions fréquentes</h2>
<h3 class="wp-block-heading">Vais-je perdre les données de mes bases ?</h3>
<p>Non. Le problème ne concerne que les fichiers de configuration dans <code>/etc/mysql</code> ; les données dans <code>/var/lib/mysql</code> restent intactes.</p>
<h3 class="wp-block-heading">Pourquoi Debian a-t-il choisi mariadb.cnf ?</h3>
<p>Parce que l&rsquo;alternative <code>my.cnf</code> était en mode automatique et que <code>mariadb.cnf</code> a une priorité de 500, supérieure aux 300 de <code>mysql.cnf</code>. Avec <code>update-alternatives --set</code>, le choix devient manuel et ne change plus tout seul.</p>
<h3 class="wp-block-heading">Cela vaut-il aussi pour Ubuntu ?</h3>
<p>Oui, le mécanisme de <code>update-alternatives</code> pour <code>my.cnf</code> est le même sur Ubuntu et sur les autres distributions dérivées de Debian.</p>
<h2 class="wp-block-heading">Conclusion</h2>
<p>L&rsquo;erreur <strong>« Can&rsquo;t read dir of /etc/mysql/mariadb.conf.d/ »</strong> n&rsquo;indique pas que MySQL est endommagé. Quand MySQL ne démarre plus, le coupable est une configuration résiduelle de MariaDB. Elle est restée active via update-alternatives. En supprimant <code>mariadb-common</code> avec <code>apt purge</code> et en remettant <code>my.cnf</code> sur <code>mysql.cnf</code>, MySQL refonctionne normalement.</p></p><p>The post <a href="https://www.cisilino.com/fr/2026/10/13/mysql-ne-demarre-plus-debian-12/">MySQL ne démarre plus après la mise à jour vers Debian 12 : cause et solution</a> first appeared on <a href="https://www.cisilino.com/fr/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/fr/2026/10/13/mysql-ne-demarre-plus-debian-12/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
