Risolvere l'errore "Impossibile connettersi al database" in ownCloud 10 con MySQL

Il modo più rapido per isolare un errore "Impossibile connettersi al database" di ownCloud 10 è testare lo stesso account MySQL, nome del database e host dal server ownCloud stesso. Se l'accesso fallisce, correggere prima la disponibilità di MySQL, l'accesso alla rete, le credenziali o i permessi. Se ha successo, verificare la configurazione di ownCloud config/config.php, l'estensione di PHP pdo_mysqle se PHP sta utilizzando il socket o la connessione TCP previsti.

Questa guida si riferisce a un'installazione esistente di ownCloud Server 10 con MySQL o MariaDB su Linux. I nomi dei servizi e i comandi dei pacchetti variano a seconda del sistema operativo e del tipo di installazione. Eseguire un backup della configurazione e del database prima di modificare le impostazioni di produzione. Non condividere mai la password del database in una segnalazione di problema né incollarla in una trascrizione pubblica della shell.

Cosa ti dice l'errore?

Il messaggio indica un sintomo, non una diagnosi. Leggi il log di ownCloud e il log del server web o di PHP al momento dell'errore. L'eccezione sottostante potrebbe indicare un driver mancante, una connessione rifiutata, un accesso respinto o un database sconosciuto. La guida di ownCloud per i database Linux richiede pdo_mysqll'estensione di PHP e sottolinea che l'impostazione del socket è importante quando MySQL è locale. Si consiglia di testare l'accesso con il client da riga di comando di MySQL.

Messaggio o indizioArea probabile da controllare
could not find drivero un errore del driver PDOIl runtime PHP web non è pdo_mysqlabilitato.
SQLSTATE[HY000] [2002]oppure “Impossibile connettersi”MySQL è inattivo, l'host o la porta sono errati, un firewall blocca TCP oppure il percorso del socket è errato.
Access denied for userLa password, l'host dell'account o le impostazioni di autenticazione MySQL non corrispondono.
Unknown databaseIl nome del database configurato è errato, mancante o non visibile all'account.

I codici di errore esatti possono variare a seconda delle versioni di PHP, MySQL, MariaDB e del sistema operativo. Considerateli come indizi e confermate la causa con i controlli seguenti. La documentazione di MySQL relativa agli accessi negati indica che la mancata corrispondenza tra account e host è una causa comune.

L'host di ownCloud può raggiungere MySQL?

Scopri se MySQL è in esecuzione sul server ownCloud, su un'altra macchina o in un container. Su Linux, controlla il servizio. I nomi delle unità più comuni sono mysqle mariadb; usa quello installato sul tuo server:

sudo systemctl status mysql
sudo systemctl status mariadb

Se è inattivo, prima di riavviarlo, controlla il registro degli errori del database o del journal. Un errore di configurazione, un disco pieno, un ripristino del database non riuscito o un conflitto di porte potrebbero impedire l'avvio.

sudo journalctl -u mariadb --since "30 minutes ago"
sudo systemctl start mariadb

Sostituisci il nome del servizio con quello appropriato. Un servizio in esecuzione non garantisce l'autenticazione di ownCloud; procedi con il test dell'account.

Per un database remoto, testare il DNS e la porta TCP configurata dall'host ownCloud. MySQL è generalmente in ascolto sulla porta 3306, sebbene le implementazioni possano utilizzare una porta diversa:

getent hosts db.example.net
nc -vz db.example.net 3306

Un controllo fallito indica un problema con DNS, routing, firewall o configurazione del listener del database. Ove possibile, consenti le connessioni solo dal server ownCloud tramite una rete privata. Non esporre MySQL a Internet pubblico come scorciatoia.

L'account del database funziona dall'host di ownCloud?

Avvia il client MySQL sul server applicativo con lo stesso nome del database, utente e host di destinazione che ownCloud dovrebbe utilizzare. L' -popzione richiede la password in privato, evitando di inserirla direttamente nel comando:

mysql -u oc_app -p -h localhost owncloud

Per un database remoto, sostituisci localhostcon il suo nome host. Se l'accesso funziona, esegui una verifica innocua:

SELECT DATABASE(), CURRENT_USER();
SHOW TABLES;
EXIT;

Questo conferma l'autenticazione di base e l'accesso al database selezionato. In caso di errore, leggere l'errore esatto e il nome utente/host riportati da MySQL. MySQL considera nome utente e host insieme quando associa un account. Si noti inoltre che localhostsu Linux viene comunemente utilizzato un socket Unix, mentre 127.0.0.1forza il protocollo TCP. Testare lo stesso metodo di connessione utilizzato nella configurazione di ownCloud:

mysql -u oc_app -p -h 127.0.0.1 owncloud

Le impostazioni del database di ownCloud sono corrette?

Verifica la configurazione attiva config/config.phpnella directory di installazione di ownCloud. Il manuale di riferimento di ownCloud elenca il tipo di database, il nome, l'utente e la password; la guida al database mostra anche l'host e il prefisso delle tabelle. Una tipica configurazione MySQL è simile a questa:

'dbtype' => 'mysql',
'dbname' => 'owncloud',
'dbuser' => 'oc_app',
'dbpassword' => 'REDACTED',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',

Verifica la presenza di errori di ortografia, spazi bianchi accidentali, password obsolete, nomi di database con maiuscole e minuscole diverse o host che puntano al server sbagliato. Conserva il resto del file, inclusi il segreto dell'istanza e la directory dei dati. Non sostituire l'intera configurazione con questo esempio.

Dopo la modifica, verifica che il file sia un codice PHP valido utilizzando il binario PHP della tua installazione:

php -l /var/www/owncloud/config/config.php

Il percorso di installazione potrebbe essere diverso. Limita l'accesso a config.php; contiene le credenziali del database e altri valori sensibili.

Il driver MySQL di PHP è abilitato per l'applicazione web?

La guida al database di ownCloud 10 richiede pdo_mysql. Verifica la versione di PHP e i moduli caricati:

php -v
php -m | grep -i pdo_mysql

Se il modulo non è presente, installa il pacchetto MySQL PDO corrispondente alla tua versione di PHP, quindi riavvia o ricarica il server web o il pool PHP-FPM pertinente. I nomi dei pacchetti variano a seconda della distribuzione Ubuntu, Debian, SUSE, Red Hat e delle immagini container. Un modulo abilitato per PHP da riga di comando potrebbe non essere abilitato per Apache o PHP-FPM, quindi verifica anche la configurazione PHP del runtime web. Evita di lasciare una pagina di diagnostica pubblica che riveli informazioni sulla configurazione di PHP.

È possibile che la configurazione del socket o dell'host sia errata?

Su Linux, un client MySQL può utilizzare un socket Unix per localhost, mentre 127.0.0.1usa TCP. Se MySQL si trova sulla stessa macchina, verifica se PHP mysql.default_socketpunta al file socket effettivamente creato dal server di database. Confronta le impostazioni di socket e porta del server di database con le impostazioni di PHP e il valore host di ownCloud.

Se MySQL è remoto, localhostil nome host è la macchina ownCloud e non il server di database. Imposta invece il nome host del database raggiungibile e assicurati che MySQL sia in ascolto sull'interfaccia prevista. Un firewall o un'impostazione di accesso solo locale bind-addresspossono impedire l'accesso remoto anche quando i comandi del database locale funzionano. Limita l'accesso all'indirizzo IP privato del server applicativo.

L'account MySQL e i relativi permessi corrispondono a quelli dell'host client?

Gli account MySQL includono un nome utente e un componente host. Pertanto, 'oc_app'@'localhost'e 'oc_app'@'10.0.0.25'sono voci di account diverse. Utilizza una connessione amministrativa per esaminare gli account disponibili e le autorizzazioni per l'account che dovrebbe corrispondere:

SELECT User, Host FROM mysql.user;
SHOW GRANTS FOR 'oc_app'@'localhost';

Se l'account non è presente ma il database esiste già, crea un account dedicato e concedigli i privilegi solo sul database ownCloud. Sostituisci il database, l'host e la password di esempio con i tuoi valori effettivi:

CREATE USER 'oc_app'@'localhost' IDENTIFIED BY 'replace-with-a-strong-password';
GRANT ALL PRIVILEGES ON owncloud.* TO 'oc_app'@'localhost';

Per un database remoto, utilizzare l'host effettivo del server applicativo nella definizione dell'account. Evitare l'utilizzo di host jolly o privilegi globali come soluzione rapida e non eseguire ownCloud come root di MySQL. Se l'account esiste già, verificarne le autorizzazioni e reimpostare la password in modo mirato, anziché creare account duplicati. Riprovare l'accesso dal server ownCloud.

Come si fa a confermare la riparazione?

Dopo aver modificato un elemento alla volta, verificare che lo stesso login da riga di comando MySQL funzioni dall'host ownCloud, che il runtime PHP web sia attivo pdo_mysqle che il log di ownCloud non registri più un'eccezione di connessione. Ricaricare il sito ed eseguire un'operazione di lettura e scrittura di base solo dopo che l'istanza è nuovamente disponibile.

Se l'accesso da riga di comando ha successo ma ownCloud continua a non funzionare, confronta esattamente il modulo host, l'account, il nome del database e il runtime PHP utilizzati dal processo web con quelli del test funzionante. Controlla i log del server web o di PHP-FPM al momento della richiesta. Per un server già installato, ripristina con attenzione la configurazione esistente; non eliminare il database né reinstallare il sistema come soluzione rapida per la risoluzione dei problemi.

Per ulteriori informazioni, consultare la guida alla configurazione e alla risoluzione dei problemi del database di ownCloud Server 10.16 , il riferimento alla configurazione di ownCloud 10.15 e le guide ufficiali di MySQL sulla risoluzione dei problemi di connessione e sugli errori di accesso negato . I nomi dei servizi, i comandi dei pacchetti e le impostazioni esatte dipendono dal sistema operativo e dalla distribuzione.

Lascia un commento

Ingresso vs. Uscita: qual è la differenza nelle reti?

Ingresso vs. Uscita: qual è la differenza nelle reti?

Comprendere come i termini "ingress" e "egress" descrivono il traffico in entrata e in uscita, perché la direzione dipende dal confine della rete e come monitorare la larghezza di banda e individuare i trasferimenti di dati rischiosi.

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

6 migliori server Syslog gratuiti da provare per la registrazione centralizzata dei log

Confronta sei server e collettori syslog gratuiti per Windows e Linux, inclusi strumenti con interfaccia grafica, opzioni open source, funzionalità di ricerca, avvisi e trasporto sicuro.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Cos'è IIS? Il server Web Windows di Microsoft e le sue alternative.

Scopri cosa fa Microsoft IIS, come funzionano la sua pipeline di richieste e i pool di applicazioni e quando Apache, NGINX o Caddy potrebbero essere più adatti alle tue esigenze di server web.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Risolvere l'elevato utilizzo della CPU in Jitsi Meet sui browser client.

Diagnostica i picchi di utilizzo della CPU del browser Jitsi Meet e riduci il carico del client controllando i riquadri video, gli effetti della fotocamera, la grafica del browser e le impostazioni dell'host.

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Come monitorare le metriche di Jitsi Videobridge con Prometheus e Grafana

Monitora lo stato di salute, il carico della conferenza e il traffico di Jitsi Videobridge con il suo endpoint Prometheus integrato, quindi esplora e visualizza i dati in Grafana.

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Come configurare un nome di dominio personalizzato per Jitsi Meet Docker

Configura un dominio personalizzato per Jitsi Meet Docker con DNS, URL pubblico, HTTPS, Let's Encrypt, porte del firewall, impostazioni NAT e verifica end-to-end.

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 errors after SSL renewal by checking the correct URL and port, proxy routing, service status, deployed certificates, and logs.

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Risolvere l'avviso di Nextcloud "PHP OPcache non è configurato correttamente".

Scopri come diagnosticare e risolvere l'avviso di configurazione di PHP OPcache di Nextcloud controllando l'SAPI PHP attivo, i limiti di dimensionamento, i commenti e le impostazioni di riconvalida.

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere gli errori di migrazione del database Kopano dopo un aggiornamento della versione di MySQL

Risolvere i problemi di migrazione del database Kopano dopo un aggiornamento di MySQL o MariaDB verificando i backup, le versioni del server, le modalità SQL, il set di caratteri, lo stato dello schema e i log.

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Come configurare l'autenticazione LDAP e Active Directory in Nextcloud

Collega Nextcloud a LDAP o Active Directory con trasporto sicuro, filtri per utenti e gruppi, attributi di accesso e un'implementazione collaudata.