Visualizzazione dei risultati da 1 a 9 su 9

Discussione: MySQL e vpn

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132

    MySQL e vpn

    Ciao a tutti, avrei bisogno di un consiglio :
    Ho un database MySQL 5.5.30 con workbench 5.2.40, installato su server.
    Un cliente chiede di poter accedere ad una parte dei dati in vpn
    Quale procedura mi consigliate :

    1- concedo l'accesso al database principale
    non so se c'è la possibilità di limitare l'accesso tramite query (esempio utente cliente1 può vedere solo dati dove campo cliente=cliente1)
    c'è questa possibilità ? se ci fosse credo che questa sarebbe la soluzione migliore

    2- creo database parallelo e lo popolo solo con i dati del cliente1
    Questo sono in grado di farlo, ma se i clienti aumentassero, diventerebbe complesso da gestire.

    3 creo interfaccia per estrazione dati che estragga quello che voglio io.
    Aumentano i costi dell'operazione

    Grazie.

  2. #2
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679

    Re: MySQL e vpn

    Originariamente inviato da andreu
    Ciao a tutti, avrei bisogno di un consiglio :
    Ho un database MySQL 5.5.30 con workbench 5.2.40, installato su server.
    Un cliente chiede di poter accedere ad una parte dei dati in vpn
    Quale procedura mi consigliate :

    1- concedo l'accesso al database principale
    non so se c'è la possibilità di limitare l'accesso tramite query (esempio utente cliente1 può vedere solo dati dove campo cliente=cliente1)
    c'è questa possibilità ? se ci fosse credo che questa sarebbe la soluzione migliore
    Non puoi farlo

    2- creo database parallelo e lo popolo solo con i dati del cliente1
    Questo sono in grado di farlo, ma se i clienti aumentassero, diventerebbe complesso da gestire.
    Ti tocca.
    Un cliente=uno schema (e un utente mysql)

    3 creo interfaccia per estrazione dati che estragga quello che voglio io.
    Aumentano i costi dell'operazione
    Sono i casi della vita

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132
    molte grazie, approfitto della gentilezza per sottoporre il secondo quesito.
    Il mio database è referenziale, quindi la tabella principale è composta da ID.
    Ho di nuovo 3 possibilità credo :

    1- creo schema per ogni utente e lo popolo con la "traduzione" degli ID perdendo la possibilità che si aggiorni cambiando le tabelle

    2- non conosco ancora a fondo MySQL, mi interfaccio con miei applicativi java.
    ce la possibilità di creare join fra le tabelle e quindi uno schema già tradotto in automatico in grado di aggiornarsi?

    3- creo io l'interfaccia

    ancora grazie.

  4. #4
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Originariamente inviato da andreu
    molte grazie, approfitto della gentilezza per sottoporre il secondo quesito.
    Il mio database è referenziale, quindi la tabella principale è composta da ID.
    E' un po' difficile da capire, ma intuisco che hai (poco saggiamente) usato chiavi primarie autoincrementanti, a loro volta usate come chiavi esterne (FK) in altre tabelle (altra cosa decisamente poco saggia), e la domanda ora è "come faccio a dividere la tabelle in tanti schemi diversi?"

    Se la domanda è questa... la risposta è...
    partiziona "a manina" le tabelle, ovvero crea degli uguali a quelli che usi.
    Il modo più veloce è mysqldump + mysql

    Poi cancelli brutalmente le righe non dei clienti
    Fine.
    Ovviamente stai molto attento a non combinare disastri, tipo cancellarti definitivamente l'archivio
    Esempio: database globale
    con tabella solcazzo (e tutte le altre, ovviamente)
    1;tizio
    2;caio
    3;sempronio
    4;tizio
    5;sempronio

    e ne vuoi fare 3, dbtizio,dbcaio,dbsempronio
    cloni (mysqldump + mysql) globale e crei
    dbtizio, dbcaio, dbsempronio, che sono identici (mantengono gli ID)
    Poi cancelli da dbtizio tutte le righe che non sono di tizio,
    da dbcaio tutte quelle che non sono di caio e così via.

    Già che ci sei, nel medio periodo, elimini le chiavi autoincrementanti e vivi felice e contento.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132
    ciao , forse non mi sono spiegato o non ho capito bene la risposta.
    Il database è composto da tabelle :


    tabella marca
    ID -- marca
    1........fiat
    2........ferrari
    3........ducati

    tabella colore
    ID -- colore
    1........bianco
    2........blu
    3........rosso

    tabella prezzo
    ID -- marca -- colore -- prezzo
    1........1...........2........prezzo 1
    2........3...........1........prezzo 2
    3........2...........3........prezzo 3

    la tabella prezzo è composta dagli ID delle "sottotabelle" , l'accesso degli utenti è sulla "tabella prezzo".
    Io gestisco la traduzione con un applicativo java, che confronta il valore nella colonna marca nella tabella prezzo, con gli Id della tabella marca e mi estrae la marca.
    Avrei una query chilometrica per "tradurre" via sql, ma il cliente non è in grado di usarla.
    Vedo 3 opzioni per far accedere il cliente ad una tabella tradotta :

    1- (se esiste) creare una tabella che si popoli automaticamente tipo cella 1-nuova tabella =al valore della colonna marca-tabella marca,il cui ID è = al valore (1 nell'esempio) della cella 1-tabella prezzo-colonna marca
    E quindi va a scrivere "fiat" al posto di 1, e così via.
    Per esempio vedo su Workbench EER Diagram (che ancora non so usare) una rappresentazione grafica delle tabelle e loro connessioni, è solo grafica ? o potrei studiandomela trarne qualcosa?

    2- popolo le tabelle clienti direttamente con dati "tradotti", non è una gran fatica,
    ma le tabelle non si aggiorneranno più con le sottotabelle.

    3- mi arrangio con un applicativo che "traduca" e si occupi delle query.


    Grazie per l'aiuto.

  6. #6
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Non ho capito quale sia l'esigenza.
    Il cliente vuole accedere, direttamente, al database, ad esempio da un client mysql?
    Oppure usa sempre e comunque la tua applicazione?
    Io gestisco la traduzione con un applicativo java, che confronta il valore nella colonna marca nella tabella prezzo, con gli Id della tabella marca e mi estrae la marca.
    Avrei una query chilometrica per "tradurre" via sql, ma il cliente non è in grado di usarla.
    Questa poi non l'ho capita affatto

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132
    bella domanda : )

    direi che al momento ho due tipi di richiesta, anche se cerco di prepararmi per ogni evenienza.

    1- il cliente vuole pubblicare in automatico sul suo sito la parte di dati a cui ha accesso.
    Non sono esperto di web, non so come voglia accedere ai dati, ma in ogni caso dovrà accedere ad una tabella "tradotta"

    2- ufficio periferico deve estrarre dati per elaborazioni. posso farli accedere con sql (io uso Heidi) ma non con query troppo complesse, quindi anche in questo caso userei tabelle "tradotte".

    Se uso mio applicativo mi arrangio, ma mi chiedevo se ci fossero altri modi.

    per la seconda domanda
    Diciamo che per tradurre la tabella :
    codice:
    tabella prezzo
    ID  marca  colore  prezzo 
    1     1         2      prezzo 1
    
    tabella prezzo tradotta
    ID  marca    colore     prezzo 
    1    ferrari   rossa      prezzo 1
    
    tabella marca
    ID  marca
    1   ferrari
    2   fiat
    con una applicazione carico tutte le tabelle su vettori (array), poi faccio i confronti via codice:
    es. cerco il valore 1 (colonna marca della tabella prezzo), fra gli ID nel vettore che contiene i dati della tabella marca ed estraggo il valore corrispondente (ferrari) e quindi visualizzo la tabella tradotta.

    Ho una query molto lunga (con LEFT JOIN) che fa lo stesso lavoro, ma il database è composto da 20 tabelle.

    grazie

  8. #8
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Originariamente inviato da andreu
    bella domanda : )

    direi che al momento ho due tipi di richiesta, anche se cerco di prepararmi per ogni evenienza.

    1- il cliente vuole pubblicare in automatico sul suo sito la parte di dati a cui ha accesso.
    Non sono esperto di web, non so come voglia accedere ai dati, ma in ogni caso dovrà accedere ad una tabella "tradotta"
    E' un pochino generica come richiesta.
    Da quanto posso intuire (o meglio sognare) il problema riguarda se esiste un singolo database coi dati di più clienti
    Se sì => si applica la soluzione che ho già indicato sopra
    2- ufficio periferico deve estrarre dati per elaborazioni. posso farli accedere con sql (io uso Heidi) ma non con query troppo complesse, quindi anche in questo caso userei tabelle "tradotte".
    Ma stigrancazzi, invece di lanciare le query "lisce" fagli uno straccio di programma dimmerda in qualsiasi modo fatto...
    ...con una applicazione carico tutte le tabelle su vettori (array), poi faccio i confronti via codice:
    es. cerco il valore 1 (colonna marca della tabella prezzo), fra gli ID nel vettore che contiene i dati della tabella marca ed estraggo il valore corrispondente (ferrari) e quindi visualizzo la tabella tradotta.

    Ho una query molto lunga (con LEFT JOIN) che fa lo stesso lavoro, ma il database è composto da 20 tabelle.

    grazie
    Direi che la query girerà mooolto più veloce di questo strano accrocchio.
    Quale sarebbe il problema?
    Francamente continuo a non capirlo.
    Hai una query lunga (il db è strutturato male), e ci devi porre dei "filtri" (tipicamente WHERE) per il cliente?
    Fagli programmello dimmerda ove mette i filtri e magicamente vengono compilate le query

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    Soluzione semplice e sicura: se il cliente deve aver accesso ad una singola tabella, allora crea una vista, crea un utente e assegna i permessi solo per l'accesso a questa vista.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.