<?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>MariaDB - Matteo Cisilino</title>
	<atom:link href="https://www.cisilino.com/tag/mariadb/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.cisilino.com</link>
	<description>Guide su WordPress, server e sicurezza</description>
	<lastBuildDate>Thu, 29 Oct 2026 18:58:10 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>MySQL non si avvia dopo l&#8217;aggiornamento a Debian 12: causa e soluzione</title>
		<link>https://www.cisilino.com/2026/10/13/mysql-non-si-avvia-debian-12/</link>
					<comments>https://www.cisilino.com/2026/10/13/mysql-non-si-avvia-debian-12/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Tue, 13 Oct 2026 07:50:06 +0000</pubDate>
				<category><![CDATA[Server e database]]></category>
		<category><![CDATA[aggiornamento]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=49</guid>

					<description><![CDATA[<p>Dopo l'aggiornamento a Debian 12 MySQL non parte e nei log compare mariadb.conf.d. Come riconoscere la causa e risolvere senza toccare i dati.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/13/mysql-non-si-avvia-debian-12/">MySQL non si avvia dopo l’aggiornamento a Debian 12: causa e soluzione</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">Il sintomo: mysql.service in stato failed</h2>



<p class="wp-block-paragraph">Quando MySQL non si avvia, il servizio risulta fallito e il log riporta l&#8217;errore <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-non-si-avvia-debian-12.webp" alt="Un cilindro che rappresenta un database con un cerchio arancione di avviso: MySQL non si avvia" width="1200" height="630"/></figure>



<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 class="wp-block-paragraph">Controllando i pacchetti installati, MySQL è regolarmente presente (pacchetti <code>mysql-community-server</code> 8.0 dal repository ufficiale Oracle).</p>



<pre class="wp-block-code"><code>dpkg -l | grep mysql</code></pre>



<h2 class="wp-block-heading">Perché MySQL non si avvia: my.cnf punta a mariadb.cnf</h2>



<p class="wp-block-paragraph">Su Debian il file <code>/etc/mysql/my.cnf</code> non è un file vero e proprio, ma un collegamento gestito da <strong>update-alternatives</strong>. Più pacchetti possono registrare la propria versione e, in modalità automatica, vince quella con la priorità più alta.</p>



<p class="wp-block-paragraph">Durante l&#8217;aggiornamento è stato installato (e poi rimosso) il pacchetto <strong>mariadb-common</strong>, che registra <code>/etc/mysql/mariadb.cnf</code> con <strong>priorità 500</strong>, più alta di <code>/etc/mysql/mysql.cnf</code> (priorità 300). Il pacchetto è stato rimosso ma non eliminato del tutto (stato <code>rc</code>), quindi la sua configurazione è rimasta attiva. Alla riga 29 di quel file c&#8217;è l&#8217;inclusione di <code>/etc/mysql/mariadb.conf.d/</code>, una cartella che non esiste: MySQL legge la configurazione, non trova la directory e si interrompe.</p>



<p class="wp-block-paragraph"><strong>Buona notizia:</strong> i dati in <code>/var/lib/mysql</code> non sono stati toccati. È solo un problema di configurazione.</p>



<h2 class="wp-block-heading">Diagnosi: verificare dove punta 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 class="wp-block-paragraph">Se il problema è questo, l&#8217;output sarà simile al seguente.</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">Soluzione passo passo</h2>



<h3 class="wp-block-heading">1. Fare un backup della configurazione</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. Eliminare i residui di mariadb-common</h3>



<p class="wp-block-paragraph">Il purge rimuove <code>mariadb.cnf</code> e la relativa voce in update-alternatives.</p>



<pre class="wp-block-code"><code>apt purge mariadb-common</code></pre>



<h3 class="wp-block-heading">3. Ripuntare my.cnf su 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. Verificare la configurazione</h3>



<pre class="wp-block-code"><code>update-alternatives --display my.cnf
cat /etc/mysql/my.cnf
my_print_defaults mysqld</code></pre>



<p class="wp-block-paragraph">Ora <code>my.cnf</code> deve puntare a <code>/etc/mysql/mysql.cnf</code> e includere <code>/etc/mysql/conf.d/</code> e <code>/etc/mysql/mysql.conf.d/</code>. Se <code>my_print_defaults mysqld</code> stampa i parametri senza errori, la configurazione è corretta.</p>



<h3 class="wp-block-heading">5. Avviare 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">Se my.cnf non è un collegamento simbolico</h2>



<p class="wp-block-paragraph">Se <code>/etc/mysql/my.cnf</code> è un file normale oppure <code>/etc/mysql/mysql.cnf</code> non esiste, si può ricreare la configurazione a mano.</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">Soluzione rapida provvisoria</h2>



<p class="wp-block-paragraph">Se MySQL non si avvia e serve rimettere online il database subito, basta creare la cartella mancante. È però solo un tampone: MySQL continuerebbe a leggere la configurazione pensata per MariaDB, quindi è meglio applicare la soluzione completa appena possibile.</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">Come evitare che si ripresenti</h2>



<p class="wp-block-paragraph">Conviene capire quale aggiornamento ha installato MariaDB, consultando lo storico di apt.</p>



<pre class="wp-block-code"><code>grep -i -B3 -A3 mariadb /var/log/apt/history.log*</code></pre>



<p class="wp-block-paragraph">Per impedire che <code>mariadb-common</code> venga reinstallato in futuro si può bloccarlo con un pin APT a priorità negativa.</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 class="wp-block-paragraph">Dopo ogni aggiornamento importante è buona abitudine controllare anche lo stato dell&#8217;alternativa con <code>update-alternatives --display my.cnf</code>. Prima del salto di versione, le <a href="https://www.debian.org/releases/bookworm/amd64/release-notes/" target="_blank" rel="noopener">note di rilascio di Debian 12</a> dicono quali pacchetti e configurazioni cambiano. Se invece ti serve una versione vecchia di MySQL su un server aggiornato, ho raccontato come ho isolato <a href="https://www.cisilino.com/2026/10/17/mysql-5-7-docker-nftables/">MySQL 5.7 in Docker</a>.</p>



<h2 class="wp-block-heading">Domande frequenti</h2>



<h3 class="wp-block-heading">Perdo i dati dei database?</h3>



<p class="wp-block-paragraph">No. Il problema riguarda solo i file di configurazione in <code>/etc/mysql</code>; i dati in <code>/var/lib/mysql</code> restano intatti.</p>



<h3 class="wp-block-heading">Perché Debian ha scelto mariadb.cnf?</h3>



<p class="wp-block-paragraph">Perché l&#8217;alternativa <code>my.cnf</code> era in modalità automatica e <code>mariadb.cnf</code> ha priorità 500, più alta dei 300 di <code>mysql.cnf</code>. Con <code>update-alternatives --set</code> la scelta diventa manuale e non cambia più da sola.</p>



<h3 class="wp-block-heading">Vale anche per Ubuntu?</h3>



<p class="wp-block-paragraph">Sì, il meccanismo di <code>update-alternatives</code> per <code>my.cnf</code> è lo stesso su Ubuntu e sulle altre distribuzioni derivate da Debian.</p>



<h2 class="wp-block-heading">Conclusione</h2>



<p class="wp-block-paragraph">Se MySQL non si avvia dopo un aggiornamento, di solito il database è intatto. L&#8217;errore <strong>&#8220;Can&#8217;t read dir of /etc/mysql/mariadb.conf.d/&#8221;</strong> dopo un aggiornamento di Debian non indica un danno a MySQL, ma una configurazione residua di MariaDB rimasta attiva tramite update-alternatives. Eliminando <code>mariadb-common</code> con <code>apt purge</code> e reimpostando <code>my.cnf</code> su <code>mysql.cnf</code>, MySQL torna a funzionare regolarmente.</p>



<p class="wp-block-paragraph"></p><p>The post <a href="https://www.cisilino.com/2026/10/13/mysql-non-si-avvia-debian-12/">MySQL non si avvia dopo l’aggiornamento a Debian 12: causa e soluzione</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/13/mysql-non-si-avvia-debian-12/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
