Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Installazione, configurazione e uso di programmi e strumenti.
Scrivi risposta
Avatar utente
ZioCrick
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 409
Iscrizione: giovedì 31 gennaio 2013, 12:32
Sesso: Maschile
Località: a Nord-Ovest di Milano
Contatti:

Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da ZioCrick » sabato 1 agosto 2020, 13:23

Buongiorno amici,
dopo tanta fatica e col vostro aiuto (vedi viewtopic.php?f=8&t=634792) ero riuscito a far condividere i database di MySql (tramite Xampp) tra Windows XP e Kubuntu 14.04.

Ora non riesco a fare la stessa cosa con Windows 8.1 e Ubuntu Studio 20.04

Ho installato Xampp versione 7.2.32 su entrambe i SO.
Su Win8.1 sono riuscito ad impostare MySQl per fargli usare i database posizionati sul solito disco riservato ai dati, visto da entrambe i SO.
Ma su Ubuntu Studio ottengo comportamenti strani.

L'ultimo è che il Server MySql non parte e nel file di log mi dice:

Codice: Seleziona tutto

2020-08-01 12:28:48 0 [ERROR] Incorrect definition of table mysql.event: expected column 'sql_mode' at position 14 to have type set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT'), 
found type set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','N...
dove si vede che il valore IGNORE_BAD_TABLE_OPTIONS del primo set ovviamewnte non trova corrispondenza con il NOT_USED del secondo set

Ma la mia domanda è:
come è possibile che avendo installato la stessa versione di Xampp su entrambe i sistemi operativi e accedendo alla stessa cartella che contiene i db, un SO utilizzi delle strutture di tabelle differenti da un altro?
Che diavoleria è mai questa? :sgrat:

Inoltre prima i db erano contenuti nei file con estensioni .frm e .ibd
adesso mi ritrovo che lo stesso nome di db (come quelli privati di MySql) ha file con estensioni .frm .MAD .MAI .MYD .MYI
alcuni db invece hanno le estensioni .frm .MYD .MYI
Non ci capisco più nulla.
Kubuntu user = 35468 - Lunga vita a Ubuntu e al Software Libero!

Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da DoctorStrange » sabato 1 agosto 2020, 14:45

Puoi provare a fare vari tipi di test, ma quello che per me è stato risolutivo in moltissimi problemi simili al tuo è questo:

ogni volta che ci si connette ad un DB , dal punto di vista del server dove il DB stesso giace, è come se ricevesse una richiesta di connessione da parte di una specifica utenza, al quale è associata una specifica password, proveniente da uno specifico host.

Questo vuol dire che, per potermi connettere ad un DB su un server, io devo specificare una stringa di connessione di questo tipo:

Codice: Seleziona tutto

sudo mysql --user="root" --password="" --host="localhost" --port=3306
Questa è una stringa tipica.

Nel tuo particolare caso, accedi con utenza root al DB (mi sembra che tu possa usare, almeno per il momento, Windows per accedere al DB), una volta che sarai entrato nel tuo DB server Mysql, con uno "show databases" dovresti trovare un DB di nome "mysql". Selezionalo con un "use mysql" e, da questo, accedi poi ad una tabella chiamata "users".

In particolare, una volta entrato con utenza root nel DB, dai questi comandi sul prompt di Mysql:

Codice: Seleziona tutto

show databases;
use mysql;
select Host,User,authentication_string from user;
Dovresti ottenere una tabella simile a questa:

Codice: Seleziona tutto

+-----------+------------------+-------------------------------------------+
| Host      | User             | authentication_string                     |
+-----------+------------------+-------------------------------------------+
| localhost | root             |                                           |
| localhost | mysql.session    | *hash-password                            |
| localhost | mysql.sys        | *hash-password                            |
| localhost | debian-sys-maint | *hash-password                            |
| localhost | leonardo         | *hash-password                            |
| %         | leonardo         | *hash-password                            |
+-----------+------------------+-------------------------------------------+
Questa tabella ti dirà quali siano le utenze autorizzate ad accedere e quali le relative password (codificate con un hash).

Quello che io sospetto, è che tu usi due utenze diverse, su Windows e su Linux per accedere al medesimo server MySQL.

Controlla questa tabella e connettiti con lo stesso utente con la stessa password.

Una volta fatto tutto questo, crea un nuovo utente, preposto ad accedere al DB ed alla specifica tabella che ti interessano, concedi loro le grant per accedere a quella tabella, e poi usa quell'unico utente.

Un'altra cosa che puoi fare, è di controllare i log di mysql, che dovrebbero trovarsi sotto /var/log/mysql, e controllare se, in questo log c'è qualche record che riguarda accessi preclusi all'utenza che usi, dovresti vedere un logo simile a questo:

Codice: Seleziona tutto

2020-08-01T12:31:21.911541Z 0 [Warning] Ignoring user change to 'root' because the user was set to 'mysql' earlier on the command line
Oppure:

Codice: Seleziona tutto

2020-08-01T12:25:26.404181Z 5 [Note] Access denied for user 'root'@'localhost'
Saluti.

Avatar utente
ZioCrick
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 409
Iscrizione: giovedì 31 gennaio 2013, 12:32
Sesso: Maschile
Località: a Nord-Ovest di Milano
Contatti:

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da ZioCrick » sabato 1 agosto 2020, 15:47

Grazie doctor per le indicazioni. :)

ma, se non sbaglio qualcosa, io fin'ora ho sempre usato l'utente root su tutti i SO e con la stessa password che usavo anche sugli altri SO da anni.

Guarda cosa succede dopo che ho provato a far partire MySQL da Ubuntu Studio senza successo, ora che sono ritornato in Windows.
Ah, io come interfaccia per accedere a MySQL uso l'utility phpMyAdmin inclusa in Xampp.
Allora il server MySQL in Windows è partito, come pure il server Apache.
Ma cercando di accedere ad uno degli utenti root che ho notato non avere la password mi ha dato l'errore che puoi vedere nello screenshot allegato.

Questa cosa succede ogni volta che ritorno a windows da Ubuntu quando addirittura cerco di accedere alla gestione degli account utenti, quindi ancora prima di arrivare a selezionarne uno.
Allegati
Errore phpMyAdmin Utente root.png
Kubuntu user = 35468 - Lunga vita a Ubuntu e al Software Libero!

Avatar utente
ZioCrick
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 409
Iscrizione: giovedì 31 gennaio 2013, 12:32
Sesso: Maschile
Località: a Nord-Ovest di Milano
Contatti:

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da ZioCrick » sabato 1 agosto 2020, 15:49

Chiedo scusa ai moderatori, ma devo sdoppiare il post perché non mi lascia caricare più di un allegato.

Continuo
Di solito rimedio restorando i 3 file db.frm db.MYD db.MYI presenti nella cartella mysql della cartella dei database condivisi.
E poi siccome come vedi ci sono 3 utenti root, di cui uno solo ha la password impostata, allora normalmente io, siccome non so quale dei 3 viene utilizzato, imposto la stessa password a tutti e 3.
Ma sta volta mi da l'errore allegato e non riesco ad accedere al singolo utente root.
Pazzesco. :muro:


EDIT: Ho guardato nel log ed in effetti c'è il Warning:

Codice: Seleziona tutto

[Warning] Access denied for user 'root'@'localhost' (using password: NO)
Ma mi chiedo:
come fa l'utente 'root'@'localhost' a non avere la password, che tra i 3 utenti root è l'unico che ce l'ha?
Allegati
Errore phpMyAdmin Accesso Utenti.png
Kubuntu user = 35468 - Lunga vita a Ubuntu e al Software Libero!

Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da DoctorStrange » sabato 1 agosto 2020, 17:01

Come faresti ad avere tre utenze root con tre password? Il root è sempre solo uno, e può avere o meno la password. Di default, quando l'istanza server di MySQL viene installata, la password di root non c'è, ovvero ci si connette con: --user="root" --password="" . Quindi la domanda: l'hai cambiata la password root?

Inoltre non mi è chiara l'architettura del tuo sever. Affinche il server mysql funzioni correttamente, questo server deve essere sempre raggiungibile e connesso. Se tu parli di un dual boot sulla tua macchina, dove sarebbe installato questo server? Mi sembra che parli di una partizione condivisa. Come è formattata? Come viene montata? Su questo aspetto non sono molto pratico ma, come ho letto nell'altra discussione, devi modiicare i path per far puntare entrambe le istanze dei due sistemi operativi alle medesime tabelle.

Mi spiegheresti meglio come hai installato tutto?

A questo punto, il problema potrebbe essere come viene montata la cartella. Da linux, entra con "cd" nella cartella con i dati e dai:

Codice: Seleziona tutto

getfacl /path/alla/cartella"
.

Gli allegati che hai postato, non si leggono. Copia i messaggi di errore ed incollali nel post.

Riguardo l'errore che hai trovato nei log, riguardo l'"Access denied", di solito è dovuto al fatto che ti ho indicato nel mio primo post. Accedi alla tabella "user" nel db "mysql" e consulta quella tabella. Capirai chi sono gli utenti autorizzati ad accedere.

Avatar utente
ZioCrick
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 409
Iscrizione: giovedì 31 gennaio 2013, 12:32
Sesso: Maschile
Località: a Nord-Ovest di Milano
Contatti:

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da ZioCrick » sabato 1 agosto 2020, 18:21

DoctorStrange ha scritto:
sabato 1 agosto 2020, 17:01
Come faresti ad avere tre utenze root con tre password? Il root è sempre solo uno, e può avere o meno la password. Di default, quando l'istanza server di MySQL viene installata, la password di root non c'è, ovvero ci si connette con: --user="root" --password="" . Quindi la domanda: l'hai cambiata la password root?
Certo che l'ho cambiata la password. E' sempre la prima cosa che faccio appena dopo aver installato Xampp. ;)
Allora,
questo è il risultato della:

Codice: Seleziona tutto

select Host,User,authentication_string from user;
non sono riuscito a come fare la tabellina che hai fatto tu che rispetti le spaziature perchè mi toglie gli spazi: :(
+-------------+---------------+-------------------------------------+
| Host | User | authentication_string |
+-------------+---------------+-------------------------------------+
| localhost | root | *hash-password |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | pma | *hash-password |
+-------------+---------------+-------------------------------------+

comunque gli utenti sono:
root con Host = localhost
root con Host = 127.0.0.1
root con Host = ::1 (che tra l'altro non so cosa significhi il ::1)
pma con Host = localhost
DoctorStrange ha scritto:
sabato 1 agosto 2020, 17:01
Inoltre non mi è chiara l'architettura del tuo sever. Affinche il server mysql funzioni correttamente, questo server deve essere sempre raggiungibile e connesso. Se tu parli di un dual boot sulla tua macchina, dove sarebbe installato questo server? Mi sembra che parli di una partizione condivisa. Come è formattata? Come viene montata? Su questo aspetto non sono molto pratico ma, come ho letto nell'altra discussione, devi modiicare i path per far puntare entrambe le istanze dei due sistemi operativi alle medesime tabelle.

Mi spiegheresti meglio come hai installato tutto?
Cerco di spiegarmi meglio:
Come server intendo il processo che fa da server di MySQl sul PC su cui lavoro.
Uso un solo PC, con Windows e Ubuntu in dual boot, in due partizioni di un disco.
Poi ho un altro disco, (formattato ntfs) dove alloggiano tutti i dati: posta elettronica, documenti vari etc. su cui ci lavoro indipendentemente da quale sistema operativo sto usando.
Ovvero siccome uso Thunderbird sia su Windows che su Ubuntu, l'archivio delle mail è sul disco Dati, in modo che posso accedervi da entrambe i SO, ovviamente uno per volta
Stessa cosa per i documenti di LibreOffice, che uso su entrambe i SO, etc.
E questo ha sempre funzionato, sin dai tempi di Windows XP e Kubuntu 14.04

Il disco da Windows ci pensa il SO a montarlo e lo vedo con la sua etichetta "DatiSSD500", mentre su Ubuntu lo monto come /media/Dati e ovviamente nel file di configurazione di MySql /opt/lampp/etc/my.cnf ci ho messo:
datadir=/media/Dati/PathDbCondivisi
innodb_data_home_dir=/media/Dati/PathDbCondivisi
innodb_log_group_home_dir=/media/Dati/PathDbCondivisi

e questo funziona perchè dal file di log di MySql vedo che accede alla cartella condivisa.

DoctorStrange ha scritto:
sabato 1 agosto 2020, 17:01
A questo punto, il problema potrebbe essere come viene montata la cartella. Da linux, entra con "cd" nella cartella con i dati e dai:

Codice: Seleziona tutto

getfacl /path/alla/cartella"
Il risultato è:

# file: mysql
# owner: root
# group: root
user::rwx
group::rwx
other::rwx

DoctorStrange ha scritto:
sabato 1 agosto 2020, 17:01
Gli allegati che hai postato, non si leggono. Copia i messaggi di errore ed incollali nel post.
Sono riuscito a riprodurre solo il primo dei due errori, e questo è il testo:

Errore

Query SQL: Copia DocumentazioneModifica Modifica

SELECT * FROM `mysql`.`db` WHERE `User` = 'root' AND `Host` = '127.0.0.1' ORDER BY `Db` ASC

Messaggio di MySQL: Documentazione
#1034 - File chiave errato per la tabella : 'db'; prova a riparalo

ma non so come ripararlo perché in phpMyAdmin il db mysql non me lo lascia selezionare per applicargli la procedura di riparazione.

DoctorStrange ha scritto:
sabato 1 agosto 2020, 17:01
Riguardo l'errore che hai trovato nei log, riguardo l'"Access denied", di solito è dovuto al fatto che ti ho indicato nel mio primo post. Accedi alla tabella "user" nel db "mysql" e consulta quella tabella. Capirai chi sono gli utenti autorizzati ad accedere.
Eh, lo potrei fare se mi partisse il server MySQL, ma il problema è proprio che su Ubuntu non mi parte quello, per cui non riesco ad eseguire phpMyAdmin.
C'è un modo alternativo per accedere ai db di MySQL?



EDIT:
Sono riuscito a riprodurre anche il secondo errore che capita se appena dopo al primo pigio sul pulsante "home" di phpMyAdmin:


Warning in .\libraries\classes\Dbi\DbiMysqli.php#199
mysqli::query(): (HY000/1034): File chiave errato per la tabella : 'db'; prova a riparalo

Backtrace

.\libraries\classes\Dbi\DbiMysqli.php#199: mysqli->query(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC',
integer 0,
)
.\libraries\classes\DatabaseInterface.php#316: PhpMyAdmin\Dbi\DbiMysqli->realQuery(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC',
,
integer 0,
)
.\libraries\classes\DatabaseInterface.php#162: PhpMyAdmin\DatabaseInterface->tryQuery(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC',
integer 256,
integer 0,
boolean true,
)
.\libraries\classes\Server\Privileges.php#3452: PhpMyAdmin\DatabaseInterface->query(string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC')
.\libraries\classes\Server\Privileges.php#3536: PhpMyAdmin\Server\Privileges->getUserSpecificRights(
string 'root',
string '127.0.0.1',
string 'database',
string '',
)
.\libraries\classes\Server\Privileges.php#5059: PhpMyAdmin\Server\Privileges->getHtmlForAllTableSpecificRights(
string 'root',
string '127.0.0.1',
string 'database',
)
.\server_privileges.php#489: PhpMyAdmin\Server\Privileges->getHtmlForUserProperties(
string '',
string '',
string 'root',
string '127.0.0.1',
string '',
string '',
)
Kubuntu user = 35468 - Lunga vita a Ubuntu e al Software Libero!

Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da DoctorStrange » sabato 1 agosto 2020, 19:55

ZioCrick ha scritto: Certo che l'ho cambiata la password. E' sempre la prima cosa che faccio appena dopo aver installato Xampp. ;)
Allora,
questo è il risultato della:
non sono riuscito a come fare la tabellina che hai fatto tu che rispetti le spaziature perchè mi toglie gli spazi: :(
+-------------+---------------+-------------------------------------+
| Host | User | authentication_string |
+-------------+---------------+-------------------------------------+
| localhost | root | *hash-password |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | pma | *hash-password |
+-------------+---------------+-------------------------------------+

comunque gli utenti sono:
root con Host = localhost
root con Host = 127.0.0.1
root con Host = ::1 (che tra l'altro non so cosa significhi il ::1)
pma con Host = localhost
Quella tabella va letta in maniera un pò diversa da come credi tu. Specifica ESATTAMENTE quali sono le stringhe di connessione ammesse per accedere, con l'utenza root, a questo DB.

In particolare, ti dice che le stringhe sono:

Codice: Seleziona tutto

sudo mysql --user="root" --password="tua-password" --host="localhost" --port=3306
sudo mysql --user="root" --password="" --host="127.0.0.1" --port=3306
mysql --user="pma" --password="tua-password" --host="localhost" --port=3306
In particolare, ti invito a notare la differenza tra le prime due. Il nome dell'host va dichiarato esattamente in quel modo nella stringa di connessione. Te lo dico perchè ho avuto personalmente questo tipo di problema, con un utente che non si connetteva perche io dichiaravo come --host la stringa "127.0.0.1", mentre, consultando questa tabella, mi sono reso conto che mysql si aspettava che io, per quella stessa opzione --host dovessi dichiarare "localhost".

Sospetto che questo possa essere la causa di molti dei problemi che seguono. In particolare tu vuoi usare phpMyAdmin, che è solo un parser grafico. Probabilmente questo, se non è configurato esattamente come vuole lui, non ti permette l'accesso, perchè ci potrebbe essere un errore di sintassi nella stringa di connessione che viene generata da phpMyAdmin, e che probabilmente non ti fa vedere, a meno che tu non vada a consultare qualche sperduto log.
ZioCrick ha scritto: Cerco di spiegarmi meglio:
Come server intendo il processo che fa da server di MySQl sul PC su cui lavoro.
Uso un solo PC, con Windows e Ubuntu in dual boot, in due partizioni di un disco.
Poi ho un altro disco, (formattato ntfs) dove alloggiano tutti i dati: posta elettronica, documenti vari etc. su cui ci lavoro indipendentemente da quale sistema operativo sto usando.
Ovvero siccome uso Thunderbird sia su Windows che su Ubuntu, l'archivio delle mail è sul disco Dati, in modo che posso accedervi da entrambe i SO, ovviamente uno per volta
Stessa cosa per i documenti di LibreOffice, che uso su entrambe i SO, etc.
E questo ha sempre funzionato, sin dai tempi di Windows XP e Kubuntu 14.04
Credo di aver capito cosa tu voglia fare. In questo caso ti consiglio di controllare molto scrupolosamente il file system del disco dati. Dire NTFS non vuol dire necessariamente che qualunque cosa tu ci scriva dentro, venga automaticamente letta da entrambi i sistemi. Di solito si hanno problemi proprio per questioni di diritti di accesso a questo file system, infatti, benche come hai visto Windows non ha problemi, perchè NTFS è nativo in Win, con Linux, quando vai a montare questo sistema, devi specificare, tra le opzioni di mount che vuoi accedere in lettura e scrittura all'intero volume.

Probabilmente il fatto che tu usi (ed abusi) dell'utenza root anche per accedere a questo disco ti ha occultato una serie di problemi che restano latenti.

E' sempre buona pratica creare ed usare un utenza specifica con i minori privilegi possibili, per accedere alle risorse.

ZioCrick ha scritto: # file: mysql
# owner: root
# group: root
user::rwx
group::rwx
other::rwx
Come vedi infatti, la cartella interessata è di proprietà di root e da come sono impostati i permessi sembra che solamente i sudoers possano operare sulla cartella, anche se non capisco per quale motivo anche "other" ha tutti i permessi aperti. Hai per caso dato un chmod 777 a questa cartella?

Utenze e permessi, su linux vanno gestiti con molta cura !!

E' in genere una brutta idea usare root in questa maniera, perchè qualunque piccolo problema od anomalia si propagherebbe senza alcun controllo in tutto il file system, senza parlare degli immensi problemi di sicurezza, visto che con questa macchina navighi anche in internet.
ZioCrick ha scritto: Il disco da Windows ci pensa il SO a montarlo e lo vedo con la sua etichetta "DatiSSD500", mentre su Ubuntu lo monto come /media/Dati e ovviamente nel file di configurazione di MySql /opt/lampp/etc/my.cnf ci ho messo:
datadir=/media/Dati/PathDbCondivisi
innodb_data_home_dir=/media/Dati/PathDbCondivisi
innodb_log_group_home_dir=/media/Dati/PathDbCondivisi

e questo funziona perchè dal file di log di MySql vedo che accede alla cartella condivisa.
Potresti cortesemente postare questo log di cui parli? ed anche un output del comando "mount", con tutti i dischi connessi. Per favore.
ZioCrick ha scritto: Sono riuscito a riprodurre solo il primo dei due errori, e questo è il testo:

Errore

Query SQL: Copia DocumentazioneModifica Modifica

SELECT * FROM `mysql`.`db` WHERE `User` = 'root' AND `Host` = '127.0.0.1' ORDER BY `Db` ASC

Messaggio di MySQL: Documentazione
#1034 - File chiave errato per la tabella : 'db'; prova a riparalo

ma non so come ripararlo perché in phpMyAdmin il db mysql non me lo lascia selezionare per applicargli la procedura di riparazione.

Eh, lo potrei fare se mi partisse il server MySQL, ma il problema è proprio che su Ubuntu non mi parte quello, per cui non riesco ad eseguire phpMyAdmin.
C'è un modo alternativo per accedere ai db di MySQL?
Mi sembrava di aver capito che con windows riuscivi ad accedere al DB. E' corretto? In alternativa, ammesso che ricordi la password di root che hai impostato, in linux ti basta aprire un terminale, e digitare la stringa di connessione di poco sopra, e dovrebbe entrare. In caso di problemi all'accesso puoi controllare i log di mysql stesso, che sono abbastanza prolissi in questo.

Ora che mi viene il dubbio, cosa dice il prompt linux se dai

Codice: Seleziona tutto

sudo systemctl status mysql
?
ZioCrick ha scritto: EDIT:
Sono riuscito a riprodurre anche il secondo errore che capita se appena dopo al primo pigio sul pulsante "home" di phpMyAdmin:


Warning in .\libraries\classes\Dbi\DbiMysqli.php#199
mysqli::query(): (HY000/1034): File chiave errato per la tabella : 'db'; prova a riparalo

Backtrace

.\libraries\classes\Dbi\DbiMysqli.php#199: mysqli->query(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC',
integer 0,
)
.\libraries\classes\DatabaseInterface.php#316: PhpMyAdmin\Dbi\DbiMysqli->realQuery(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC',
,
integer 0,
)
.\libraries\classes\DatabaseInterface.php#162: PhpMyAdmin\DatabaseInterface->tryQuery(
string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC',
integer 256,
integer 0,
boolean true,
)
.\libraries\classes\Server\Privileges.php#3452: PhpMyAdmin\DatabaseInterface->query(string 'SELECT * FROM `mysql`.`db` WHERE `User` = \'root\' AND `Host` = \'127.0.0.1\' ORDER BY `Db` ASC')
.\libraries\classes\Server\Privileges.php#3536: PhpMyAdmin\Server\Privileges->getUserSpecificRights(
string 'root',
string '127.0.0.1',
string 'database',
string '',
)
.\libraries\classes\Server\Privileges.php#5059: PhpMyAdmin\Server\Privileges->getHtmlForAllTableSpecificRights(
string 'root',
string '127.0.0.1',
string 'database',
)
.\server_privileges.php#489: PhpMyAdmin\Server\Privileges->getHtmlForUserProperties(
string '',
string '',
string 'root',
string '127.0.0.1',
string '',
string '',
)
Questi sembrano tutti essere errori non tanto del DB, quanto di phpMyAdmin, che non trova alcune librerie. Nn sono pratico di questi strumenti perchè non li uso, dunque ti chiedo: phpMyAdmin, è basato su Java?

Ti consiglio prima di risolvere i problemi di connessione ed accesso al DB su Linux, poi penseremo a phpMyAdmin.

Saluti

Avatar utente
ZioCrick
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 409
Iscrizione: giovedì 31 gennaio 2013, 12:32
Sesso: Maschile
Località: a Nord-Ovest di Milano
Contatti:

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da ZioCrick » domenica 2 agosto 2020, 15:27

Carissimo Doctor, lasciati dire che sei un grande! :D
Con la tua pazienza e competenza mi hai aperto non un mondo ... ma un universo!!! ;)
Sono troppo felice e ti spiego il perché.

Ho provato il primo comando che mi hai indicato per connettermi al server MySQL

Codice: Seleziona tutto

sudo mysql --user="root" --password="tua-password" --host="localhost" --port=3306
mettendo la password corretta ...
e ovviamente mi diceva che il server non esisteva ...
che scoperta ... tramite Xampp non riuscivo a farlo partire ...
Allora ho cercato l'eseguibile del server e finalmente l'ho trovato e ... sorpresa ... è partito!!!! facendo riferimento alla cartella dei db sul disco Dati!
Quindi i parametri di configurazione che avevo messo nel my.cnf erano corretti.
E allora perché da Xampp non parte? Boh? Forse perché come dicevi tu l'uso di root mi nasconde dei problemi?

Subito dopo ho riprovato il comando del client ... e magicamente ha funzionato!
Ho verificato quali db avevo e gli utenti e tutto torna.
Tra l'altro il client parte anche senza sudo.

Allora ho voluto provare subito una mia applicazione che ho sviluppato in Java per la gestione dei miei film, e che fa uso di un db MySQL, e magicamente funziona!
Questa è stata l'apoteosi della mia felicità ... ecco perché prima di proseguire con ulteriori prove ho voluto dirtelo.

Tra l'altro digitando help dal prompt di MySQL (che in realtà è MariaDB di cui non sapevo nulla) mi ha dato l'indicazione di andare su http://mariadb.org per trovare tutta la documentazione necessaria ... e allora mi sono fatto un giro e da li ho iniziato a capire qualcosa di più su questo ambiente che prima per me era nebbia totale (sai quella della val padana? bella spessa x.x ) mi sono trovato pure la storia del creatore di MySQl fino al fork di MariaDB etc.

A questo punto mi sa che la questione del disco ntfs è ininfluente, ma non ho fatto ulteriori approfondimenti.

Mi interessa comunque approfondire la questione dei privilegi di accesso al disco e l'uso di un utente differente da root, per le questioni di sicurezza che citavi.

A questo proposito mi è venuto in mente che già tempo fa avevo indagato sull'owner e i permessi delle cartelle del disco Dati ntfs (sempre perché nei log trovavo errori di accesso) e avevo scoperto che tutto il disco viene visto da Linux con l'owner = root e i privilegi in lettura scrittura aperti a tutti, non solo la cartella dei db.
Avevo provato anche a cambiare l'owner da terminale, ma sembrava ignorare bellamente il comando.

Ho quindi provato il comando mount e ti riporto solo la parte che riguarda il disco dati:

Codice: Seleziona tutto

/dev/sdb2 on /media/Dati type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
Se vuoi anche gli altri li metto.

il comando

Codice: Seleziona tutto

sudo systemctl status mysql
invece mi da

Codice: Seleziona tutto

Unit mysql.service could not be found.
Ma come mai se invece MySQL è attivo e funziona?

Ah, a questo punto a me di Xampp non interessa più un fico secco, visto che mi crea solo problemi e comunque, almeno per ora non mi serve apache e tutto il resto ma solo MySQL. Anche perché come FTP per i miei siti uso FileZilla come applicazione a parte e li ho realizzati direttamente on-line.

Se mi dici cosa usi tu sono pronto a seguire le tue orme verso l'infinito e oltre! :birra:
Se abitassimo più vicini ti inviterei anche da me per una pizza. ;)
Kubuntu user = 35468 - Lunga vita a Ubuntu e al Software Libero!

Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da DoctorStrange » lunedì 3 agosto 2020, 1:29

ZioCrick ha scritto: e ovviamente mi diceva che il server non esisteva ...
che scoperta ... tramite Xampp non riuscivo a farlo partire ...
Allora ho cercato l'eseguibile del server e finalmente l'ho trovato e ... sorpresa ... è partito!!!! facendo riferimento alla cartella dei db sul disco Dati!
Quindi i parametri di configurazione che avevo messo nel my.cnf erano corretti.
E allora perché da Xampp non parte? Boh? Forse perché come dicevi tu l'uso di root mi nasconde dei problemi?
Sono contento che in parte tu sia riuscito a risolvere !!

Comunque il fatto che phpMyAdmin non funzioni, come hai visto, non preclude il funzionamento del vero database. Gli errori che hai postato nel messaggio precedente parlano proprio di problemi inerenti chiavi e diritti d'accesso:

Codice: Seleziona tutto

.\libraries\classes\Server\[b]Privileges.php[/b]#5059: PhpMyAdmin\Server\Privileges->getHtmlForAllTable[b]SpecificRights[/b]
quindi non escludo che il problema con phpMyAdmin possa riferirsi od alla tua particolare configurazione, perchè hai distaccato le tabelle del DB dalla loro normale configurazione, oppure al disco che è di proprietà esclusiva di root.
ZioCrick ha scritto: Subito dopo ho riprovato il comando del client ... e magicamente ha funzionato!
Ho verificato quali db avevo e gli utenti e tutto torna.
Tra l'altro il client parte anche senza sudo.

Allora ho voluto provare subito una mia applicazione che ho sviluppato in Java per la gestione dei miei film, e che fa uso di un db MySQL, e magicamente funziona!
Questa è stata l'apoteosi della mia felicità ... ecco perché prima di proseguire con ulteriori prove ho voluto dirtelo.
Benissimo !
ZioCrick ha scritto: A questo punto mi sa che la questione del disco ntfs è ininfluente, ma non ho fatto ulteriori approfondimenti.

Ho quindi provato il comando mount e ti riporto solo la parte che riguarda il disco dati:

Codice: Seleziona tutto

/dev/sdb2 on /media/Dati type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
Se vuoi anche gli altri li metto.
Come immaginavo il disco già viene montato come di proprietà esclusiva di root. Questa cosa va modificata. Ti chiedo: hai per caso lasciato Windows con il fast boot abilitato? Se, magari, Windows mantiene parte del controllo di quel disco, potrebbe essere normale che questa partizione sia di root, perchè non potresti fare altrimenti se Windows non la "rilascia" completamente.

Prova con un chmod, un chown ed un chgrp sul disco e vedi se riesci a cambiare utenza, proprietario e permessi al disco. Se funziona correttamente e riesci a "derubricare" la proprietà del disco all'utente generico, allora scrivi una riga su fstab, in modo che, d'ora in poi, questo venga montato ed assegnato all'utente generico, e non piu a root.
ZioCrick ha scritto: il comando

Codice: Seleziona tutto

sudo systemctl status mysql
invece mi da

Codice: Seleziona tutto

Unit mysql.service could not be found.
Ma come mai se invece MySQL è attivo e funziona?
Mi sembra logico che, se il tuo DB non è MySQl, ma MariaDB, allora il comando avrebbe dovuto essere, fin dall'inizio:

Codice: Seleziona tutto

sudo systemctl status mariadb
Se lo avessimo saputo subito, avrei dato il comando corretto anche prima :lol: .
ZioCrick ha scritto: Ah, a questo punto a me di Xampp non interessa più un fico secco, visto che mi crea solo problemi e comunque, almeno per ora non mi serve apache e tutto il resto ma solo MySQL.
Xampp indica un ecosistema di applicazioni: Windows, apache, Mysql, php. A te invece l'unica cosa che non funziona è solo phpMyAdmin, da come mi pare di aver capito. Poco male, perchè importante è che funzioni il server DB, le interfacce grafiche hanno una dubbia utilità.
ZioCrick ha scritto: Anche perché come FTP per i miei siti uso FileZilla come applicazione a parte e li ho realizzati direttamente on-line.
Questa mi sembra essere una cosa nuova. Non hai mai parlato di FTP. Magari apri una nuova discussione e specifica bene quali problemi hai, con FTP, in particolare dove è installato, configurazioni, porte e firewall.

Saluti

Avatar utente
ZioCrick
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 409
Iscrizione: giovedì 31 gennaio 2013, 12:32
Sesso: Maschile
Località: a Nord-Ovest di Milano
Contatti:

Re: Condivisione db MySql tra Windows 8.1 e Ubuntu Studio 20.04

Messaggio da ZioCrick » lunedì 3 agosto 2020, 14:31

DoctorStrange ha scritto:
lunedì 3 agosto 2020, 1:29
Come immaginavo il disco già viene montato come di proprietà esclusiva di root. Questa cosa va modificata. Ti chiedo: hai per caso lasciato Windows con il fast boot abilitato? Se, magari, Windows mantiene parte del controllo di quel disco, potrebbe essere normale che questa partizione sia di root, perchè non potresti fare altrimenti se Windows non la "rilascia" completamente.
Ho controllato ed è disabilito.

DoctorStrange ha scritto:
lunedì 3 agosto 2020, 1:29
Prova con un chmod, un chown ed un chgrp sul disco e vedi se riesci a cambiare utenza, proprietario e permessi al disco. Se funziona correttamente e riesci a "derubricare" la proprietà del disco all'utente generico, allora scrivi una riga su fstab, in modo che, d'ora in poi, questo venga montato ed assegnato all'utente generico, e non piu a root.
Ho provato varie volte, ma non succede nulla e non mi da nemmeno alcuna segnalazione di errore.
In pratica il disco Dati continua ad avere owner root e diritti di accesso aperti a tutti.
Domanda:
come si fa a montare il disco per non avere l'owner root ma l'utente generico?
Io nel file fstab ho semplicemente aggiunto questa riga, che non ricordo da dove l'ho copiata, modificandogli solo il device e il punto di mount

Codice: Seleziona tutto

/dev/sdb2 /media/Dati ntfs-3g silent,umask=000,locale=it_IT.utf8 0 0
mi sai dire cosa devo cambiare? Perché al momento ho provato a cercare la sintassi di mount ma non ci capisco nulla.
DoctorStrange ha scritto:
lunedì 3 agosto 2020, 1:29
Mi sembra logico che, se il tuo DB non è MySQl, ma MariaDB, allora il comando avrebbe dovuto essere, fin dall'inizio:

Codice: Seleziona tutto

sudo systemctl status mariadb
Ho provato ma mi da:

Codice: Seleziona tutto

Unit mariadb.service could not be found.
Ho provato anche con mariaDB e MariaDB ... ma nulla.

DoctorStrange ha scritto:
lunedì 3 agosto 2020, 1:29
Xampp indica un ecosistema di applicazioni: Windows, apache, Mysql, php. A te invece l'unica cosa che non funziona è solo phpMyAdmin, da come mi pare di aver capito. Poco male, perchè importante è che funzioni il server DB, le interfacce grafiche hanno una dubbia utilità.
Concordo, quindi tu cosa usi? Solo il terminale?
Anche per creare/modificare gli utenti, creare database, tabelle e fare import/export dei db?

DoctorStrange ha scritto:
lunedì 3 agosto 2020, 1:29
Questa mi sembra essere una cosa nuova. Non hai mai parlato di FTP. Magari apri una nuova discussione e specifica bene quali problemi hai, con FTP, in particolare dove è installato, configurazioni, porte e firewall.
Ah no, era solo per chiarire che il filezilla contenuto in Xampp non mi serve, perché l'ho installalto per i fatti suoi e funziona benissimo. ;)
Kubuntu user = 35468 - Lunga vita a Ubuntu e al Software Libero!

Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 8 ospiti