Pagina 1 di 2

Gestione MySQL da remoto

Inviato: gio 23 set 2010, 17:41
da Trotto@81
Vi espongo il problema che ho risolto in parte.
Un'azienda delle mie parti ha un server con OpenSuse che fa da database ad un gestionale, il titolare
mi chiama spesso per piccoli interventi sul sistema, me la cavo abbastanza bene con la distribuzione
pur non conoscendola, ma ieri si è presentato un problema che non riguarda proprio la distro.
L'azienda che fornisce il gestionale lo chiama perchè avevano un aggiornamento a disposizione,
questo upgrade comprendeva l'aggiunta al database di una tabella chiamata aziende.
Loro tramite una postazione windows con un programma per la gestione grafica del db
volevano aggiungere la tabella in questione, ma pur avendo inserito tutte le giuste credenziali
non riuscivano perchè gli veniva negato l'accesso, l'utente era root.
Ho creato la tabella tramite query dal server fisico, e sempre tramite il programma non
riuscivano a visualizzarla.
Successivamente ho dato tutti i provilegi alla tabella e i problemi sono scomparsi.
Il software per gestire il db ora non lo ricordo, ma si trova su una macchina win in rete con il server naturalmente.

La mia domanda è, perchè se le credenziali erano tutte corrette non riuscivano a creare la tabella o a visualizzarla se
creata tramite query sul server fisico?

Di database non ci capisco una mazza, a dire il vero nemmeno quelli della software house che non sapevano nemmeno
dirmi se andavano assegnati determinati privilegi (si giustificano dicendo che non sanno usare Linux, bah), ma sarei
curioso di capire dove sta il problema e se può essere risolto per evitare fastidi in futuro.

Il titolare è un tipo ostinato e nonostante gli vogliano installare Windows Server lui insiste nel tenere Suse.

Re: Gestione MySQL da remoto

Inviato: gio 23 set 2010, 19:05
da Naitso
mysql per essere gestito da remoto (via TCP) usa la porta 3306/tcp open mysql che per essere abilitata in slackware basta leggere /etc/rc.d/rc.mysql

Codice: Seleziona tutto

# To allow outside connections to the database comment out the next line.
# If you don't need incoming network connections, then leave the line
# uncommented to improve system security.
#SKIP="--skip-networking"
nel tuo caso potresti verificare direttamente da una shell del server se la porta è aperta (nmap localhost), se lo è,verifica se SELinux è attivo e se ti blocca la connessione, altrimenti apri la porta (che non no idea di come si faccia in OpenSuse ma penso che google ti possa aiutare), e poi passi alle conf di SELinux (anceh qui San Google)

Per verificare il tutto puoi usare mysql-workbench o una shell da un altro pc se preferisci la riga di comando.
P.S. Attenzione che per gestire il DB con tools di questo tipo ci deve essere un anche un utente abilitato per farlo, mi spiego, tu usi root ma da remoto sarà root@nomepc.dominio.local (se è una macchina Win di una rete aziendale)

Re: Gestione MySQL da remoto

Inviato: gio 23 set 2010, 20:36
da Trotto@81
Intanto grazie per la risposta.
La porta in ascolto è proprio quella, verificata con netstat e in OpenSuse la configurazione del db si trova in /etc/my.conf.
Il programma in questione è SQL Manager, ma ti volevo chiedere una precisazione, perchè dopo aver dato tutti i privilegi da remoto è riuscito a fare tutto?

Giusto per essere precisi, io voglio che la software house possa creare da remoto nuove tabelle tramite
SQL Manager, cosa che ora non può fare, e perchè dopo aver dato i privilegi loro con la tabella creata da me è riuscito a fare tutto il lavoro che c'era da fare?

Scusami se ti stresso, ma ieri al volo ho dovuto imparare le cose più basilari di mysql perchè l'azienda doveva lavorare e per colpa
dell'assistenza sono rimasti bloccati e non poteva consegnare i lavori ultimati.

Re: Gestione MySQL da remoto

Inviato: gio 23 set 2010, 21:34
da roberto67
Ciao,
evidentemente l'utente root di mysql ha i privilegi solo per collegarsi da localhost. E cosi dovrebbe essere.
Ma perchè i tuoi clienti usano root per gestire le tabelle anzichè un'utenza con privilegi limitati al DB in uso? Inlotre. se non vogliono mettere a repentaglio la sicurezza del server mysql, consiglia loro di non aprire porte 3306 verso l'esterno. Se c'è un http server installaci phpmyadmin e gestisci tutto in remoto con quello, che è tra l'altro uno strumento potentissimo.

ciao
Roberto

Re: Gestione MySQL da remoto

Inviato: gio 23 set 2010, 21:48
da Trotto@81
roberto67 ha scritto:Ciao,
evidentemente l'utente root di mysql ha i privilegi solo per collegarsi da localhost. E cosi dovrebbe essere.
Ma perchè i tuoi clienti usano root per gestire le tabelle anzichè un'utenza con privilegi limitati al DB in uso? Inlotre. se non vogliono mettere a repentaglio la sicurezza del server mysql, consiglia loro di non aprire porte 3306 verso l'esterno. Se c'è un http server installaci phpmyadmin e gestisci tutto in remoto con quello, che è tra l'altro uno strumento potentissimo.

ciao
Roberto
Solo l'assistenza viene fatta da remoto, perchè tra la Calabria e la Lombardia sarebbe difficile il contrario, l'utilizzo è esclusivamente tramite rete locale.
Anche io avevo pensato di installare phpmyadmin, ma prima dovrei chiedere ai tecnici dell'assistenza se siano in grado di usarlo :lol:
Qual'è insomma la soluzione più elegante e sicura?
Abilitare la gestione da remoto oppure apache + phpmyadmin? Sempre concesso che accettino di usarlo.

Re: Gestione MySQL da remoto

Inviato: gio 23 set 2010, 21:59
da roberto67
Trotto@81 ha scritto: Anche io avevo pensato di installare phpmyadmin, ma prima dovrei chiedere ai tecnici dell'assistenza se siano in grado di usarlo :lol:
Beh, un assistente tecnico che avesse problemi a maneggiare un semplice strumento del genere, che tra l'altro non ha bisogno di manuali nè di conoscenze sql, mi farebbe un po' sorridere... :)
Trotto@81 ha scritto: Qual'è insomma la soluzione più elegante e sicura?
Abilitare la gestione da remoto oppure apache + phpmyadmin? Sempre concesso che accettino di usarlo.
I termini di sicurezza aprire porte alla rete internet per fare assistenza mi sembrerebbe deprecabile...
Ah, se opti per phpmyadmin assicurati che abbiano una connessione https...

Re: Gestione MySQL da remoto

Inviato: gio 23 set 2010, 23:01
da Trotto@81
roberto67 ha scritto: Beh, un assistente tecnico che avesse problemi a maneggiare un semplice strumento del genere, che tra l'altro non ha bisogno di manuali nè di conoscenze sql, mi farebbe un po' sorridere... :)
I termini di sicurezza aprire porte alla rete internet per fare assistenza mi sembrerebbe deprecabile...
Ah, se opti per phpmyadmin assicurati che abbiano una connessione https...
Non sapevano spiegarsiperchè da remoto non riuscivano ad accedere al db, questa gente scrive un software non conoscendo
gli strumenti che usano. :shock:

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 10:01
da Naitso
Ora non so che comandi/permessi hai impostato nella tabella per permettere all'azienda di caricare il tutto, ma di solito (non sono un esperto di mysql) creo l'utente in mysql.users e poi associo il/i db che dovrà utilizzare in modo che l'utente "PIPPO" vedrà solo i db a lui associati, e root non lo faccio usare a nessuno.
Per chiarire puoi leggere dal db mysql la tabella users

Codice: Seleziona tutto

use mysql
select users, host from user;

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 16:19
da Trotto@81
Naitso ha scritto:Ora non so che comandi/permessi hai impostato nella tabella per permettere all'azienda di caricare il tutto, ma di solito (non sono un esperto di mysql) creo l'utente in mysql.users e poi associo il/i db che dovrà utilizzare in modo che l'utente "PIPPO" vedrà solo i db a lui associati, e root non lo faccio usare a nessuno.
Per chiarire puoi leggere dal db mysql la tabella users

Codice: Seleziona tutto

use mysql
select users, host from user;
La tabella è di root e ho dato tutti i privilegi affinchè dalla postazione windows la riuscissero a vedere tramite SQL Manager.
Ho deciso che se mi richiameranno in futuro gli configuro apache con phpmaydmin così sempre da windows tramite browser lanciano tutte le
query che vogliono, se poi non gli va bene fatti loro, questi lavori li faccio gratis in amicizia e quando mi mettono sotto pressione
perchè sono fermi con le consegne perchè l'aggiornamento del gestionale non è andato a buon fine non è piacevole, specie se
quelli dell'assistenza del software ti dicono che non conoscono linux anche quando gli fai domande prettamente inerenti al database.

Mi sono deciso a fare così perchè mi pare di capire che abilitare la gestione da remoto non è la soluzione migliore dal punto di vista della sicurezza.
In pratica dalla lan possono usare il gestionale, ma tramite SQL Manager sempre dalla lan non possono intervenire sul database se non direttamente
dal server che lo ospita.

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 16:32
da roberto67
Trotto@81 ha scritto: Le tabelle sono di root e ho dato tutti i privilegi affinchè dalla postazione windows le riuscissero a vedere tramite SQL Manager.
Se intendi che root viene usato per le query normali oltre che per l'amministrazione, credo che non sia una buona idea, sempre per motivi di sicurezza, visgto che root vede anche i db di sistema . Perchè non crei una utenza apposita che ha privilegi solo sul database in questione? :p

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 16:52
da Trotto@81
roberto67 ha scritto:
Trotto@81 ha scritto: Le tabelle sono di root e ho dato tutti i privilegi affinchè dalla postazione windows le riuscissero a vedere tramite SQL Manager.
Se intendi che root viene usato per le query normali oltre che per l'amministrazione, credo che non sia una buona idea, sempre per motivi di sicurezza, visgto che root vede anche i db di sistema . Perchè non crei una utenza apposita che ha privilegi solo sul database in questione? :p
Mi spiego meglio. :)
Mi loggo dal server fisico su cui gira il db con,

Codice: Seleziona tutto

mysql -u root -p
con la query,

Codice: Seleziona tutto

CREATE DATABASE aziende;
creo la tabella bella linda e pulita. :D
Bene, questa tabella dalla postazione Windows tramite SQL Manager non viene vista anche se presente, mentre le altre in uso dal gestionale si.
Se provo a crearla da SQL Manager con le credenziali di root e l'indirizzo ip corretto con la giusta porta mi dice che non ho i permessi necessari.
Ma se dal server con GRANT assegno tutte le credenziali a root per la tabella 'aziende' prima creata, da SQL Manager sulla tabella in questione si può effettuare qualsiasi
operazione, come successivamente fatto dall'assistenza.
I tecnici dell'assistenza del gestionale avrebbero voluto creare loro tramite SQL Manager da una postazione Windows nella lan la tabella, ma il database non glielo permetteva.
Se io creo un user a cui assegno le credenziali per lavorare sulle tabelle in questione, nel momento in cui ci fosse la necessità di crearne delle nuove sempre da remoto, potrebbe farlo?

Aggiungo anche che il gestionale gira solo su Win, il server Linux fa solo da database.

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 17:13
da roberto67
Trotto@81 ha scritto: Mi loggo dal server fisico su cui gira il db con,

Codice: Seleziona tutto

mysql -u root -p
con la query,

Codice: Seleziona tutto

CREATE DATABASE aziende;
creo la tabella bella linda e pulita. :D
Ecco è qui il punto. Non dovrebbe essere root a creare le tabelle (ti immagini il lavoraccio di un amministratore sql che dovesse essere interpellato per creare le tabelle agli utenti? :shock: ).
Lo schema sarebbe questo: root crea il DB, crea poi una utenza generica ("user" ad esempio) e gli dà i privilegi completi su quel DB, GRANT a parte. A questo punto user può creare le tabelle che vuole sul proprio DB.
In realtà, quando crei l'utente user, su mysql la cosa è un po' ambigua. E' necessario avere un user@192.168.x.x e un altro user@x.x.x.x per l'accesso da remoto. Insomma sono due utenti che hanno la stessa password, gli stessi privilegi, ma ip di accesso diversi. Ma se non hai un ip statico per fare l'accesso da remoto la vedo un po' difficile, e anche per questo consigliavo phpmyadmin, anche per motivi di sicurezza.
Se io creo un user a cui assegno le credenziali per lavorare sulle tabelle in questione, nel momento in cui ci fosse la necessità di crearne delle nuove sempre da remoto, potrebbe farlo?
Ti ho risposto sopra. Dai i privilegi a "user" sull'intero DB e hai risolto il problema. A quel punto non hai più bisogno di fare connessioni superflue con root, del quale non sei tenuto nemmeno a dare la pwd a chicchessia. :p

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 17:38
da Trotto@81
A questo punto mi conviene creare un altro db con un utente e poi farsi trasportare tutto sul nuovo database da quelli dell'assistenza?
Vorrei evitare di fare esperimenti con i dati altrui perchè non sono in grado di garantire il lavoro.
Se mi dai le indicazioni provo a proporre questa soluzione visto che sono legati a SQL Manager.
Attualmente hanno tre taballe io dovrei creare un altro db e poi fargliele ricreare loro all'interno.

Ma da come ho capito, loro hanno tre db distinti, tipo aziende, gestionale, test.
Loro potrebbero trasportarle all'interno di tre tabelle distinte omonime?

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 17:46
da roberto67
no, basta creare l'utenza che ti ho detto e dare i tutti i privilegi sul db in questione. Il codice dovrebbe essere (fai delle prove su un db di test prima :| )

Codice: Seleziona tutto

CREATE USER 'testuser'@'123.123.123.123' IDENTIFIED BY '***';

GRANT USAGE ON * . * TO 'testuser'@'123.123.123.123' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON `nometuodb` . * TO 'testuser'@'123.123.123.123';
Questo dopo aver selezionato il db in questione. Poi fai lo stesso creando un altro utente con pwd identica, ma testuser@127.0.0.1 oppure testuser@192.168.x.x

Re: Gestione MySQL da remoto

Inviato: ven 24 set 2010, 17:51
da hashbang
nel tuo caso potresti verificare direttamente da una shell del server se la porta è aperta (nmap localhost), se lo è,verifica se SELinux è attivo e se ti blocca la connessione, altrimenti apri la porta (che non no idea di come si faccia in OpenSuse ma penso che google ti possa aiutare), e poi passi alle conf di SELinux (anceh qui San Google)
Se non ricordo male, solo le distribuzioni Red Hat based usano SELinux di default. Di sicuro dai un'occhiata alle configurazioni di AppArmor, che come su Ubuntu è installato e avviato di default (su SUSE si configura facilmente grazie ai tool grafici della distro).

Offtopic: IMHO, usare su un server aziendale OpenSuSE è un vero e proprio suicidio. È proprio come usare una Fedora. A quel punto è meglio affidarsi a soluzioni commerciali stabili e con un supporto come SUSE Linux Enterprise o Red Hat Enterprise Linux