Abilitare connessione remota su mysql

di il
7 risposte

Abilitare connessione remota su mysql

Ciao a tutti
Premetto di essere alle prime armi con MySQL,ecco a voi il mio problema:
Dopo aver installato MySQL Server 5.6 e progettato una piccola applicazione java che fa uso dei database vorrei provare ad accedere al database in remoto. Fin'ora il nome del "Server host" l'ho identificato come localhost e tutto è andato bene ,ma cosi è troppo banale. Vorrei che funzionasse inserendo il mio indirizzo ip al posto di localhost .In parole povere non riesco ad accedere a MySQL da remoto,e neanche da locale a quanto pare . Sul web ho trovato delle guide che suggeriscono di modificare la voce "bind-address" che si trova in "my.ini",ma nel file "my.ini" che mi ritrovo questa voce non esiste proprio. So di non essere stato molto chiaro ragazzi,ma spero che riuscirete ad aiutarmi lo stesso, sto impazzendo .

7 Risposte

  • Re: Abilitare connessione remota su mysql

    Ma esattamente da dove devi accedere e dove sta il server? C'è una questione di architettura di rete prima di parlare della configurazione del mysql.
  • Re: Abilitare connessione remota su mysql

    Ti chiedo scusa sono stato molto poco chiaro.
    Praticamente vorrei che il mio computer funga da server,vorrei che chi usa il mio programmino acceda internamente al mio computer e quindi possa modificare il database che ho progettato .
    Per quanto riguarda 'chi deve accedere al server': Io parlavo di connessione remota(per generalita'),ma in realta' mi andrebbe bene anche in locale. Ad esempio ho due compuer collegati alla stessa rete, sono A e B. A è il server,vorrei che B(collegato alla stessa rete) posso accedere ad A attraverso la mia applicazione e ne possa modificare il database.
    Spero di essere stato chiaro questa volta,anche perchè io di architettura di rete non ne capisco molto...
  • Re: Abilitare connessione remota su mysql

    La soluzione e' estremamente banale:
    https://dev.mysql.com/doc/refman/5.5/en/option-file-options.html#option_general_defaults-extra-file

    quello che c'e' da fare e' AGGIUNGERE nel file di configurazione, sezione [mysql], il parametro 'host' (dove c'e' anche 'port') con il valore '0.0.0.0' oppure l'ip' del pc su cui gira mysql, ovviamente

    '0.0.0.0' vuol dire semp.icemente che il server ascolta TUTTI gli ip del pc.

    Come si fa a conoscere gli ip del pc? Da console (cmd) con il comando ipconfig per Winfows e ifconfig per Linux/Mac
  • Re: Abilitare connessione remota su mysql

    Grazie mille per la tua risposta
    Ho fatto come dici tu,sono andato nel file 'my.ini' e nella sezione MySql che si trova sotto la sezione client(io qui mi trovo port) ho aggiunto la seguente riga: host=0.0.0.0. Pero' ancora non va, non funziona neanche se come ho fatto fin'ora accedo come localhost. Mi da questo errore:
    MySQL error number 2003. Can't connect Mysql on ' [indirizzo ip] ' (10061)
  • Re: Abilitare connessione remota su mysql

    Allora, la cosa e' piu' complicata del previsto (e te pareva )

    Ma poi non cosi' complicata

    Da un certo punto di vista e' logica!

    ERRORE: il parametro da configurare non e'

    host = 0.0.0.0

    ma proprio

    bind-address = 0.0.0.0
    
    [ mysqld ]
    
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
    
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    
    # These are commonly set, remove the # and set as required.
    # basedir = .....
    # datadir = .....
    # port = .....
    # server_id = .....
    bind-address = 0.0.0.0
    port=3306
    
    comunque NON SERVE: di default MySQL ascolta gia' su tutti gli IP!


    Ora viene la parte complicata: bisogna configurare gli utenti che possono accedere a "Mysql" da un ip DIVERSO da 127.0.0.1:

    1) possono accedere SOLO gli utenti associati ad uno specifico IP client (e questo implica anche l'IP della macchina su cui gira MySQL! se si usa l'IP diverso da 127.0.0.1).

    Al momento non ho trovato come configurare che un utente puo' accedere al server MySQL da QUALUNQUE IP client.

    2) poi bisogna assegnare all'utente l'elenco dei diritti che puo' avere quando accede al DBMS: fondamentalmente se puo' creare/rimuovere database/tabelle, fare select/insert/update/delete ...

    Una buona base di partenza e' la seguente:
    
    GRANT USAGE ON *.* TO `root`@'192.168.0.6' IDENTIFIED BY 'password'
    GO
    GRANT SHOW VIEW ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT DROP ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT ALTER ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT SHUTDOWN ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT DELETE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT INDEX ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT EXECUTE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT SELECT ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT SHOW DATABASES ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT RELOAD ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT CREATE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT REPLICATION CLIENT ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT FILE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT UPDATE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT LOCK TABLES ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT CREATE USER ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT ALTER ROUTINE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT CREATE ROUTINE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT REPLICATION SLAVE ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT CREATE TEMPORARY TABLES ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT PROCESS ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT REFERENCES ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT INSERT ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT SUPER ON *.* TO `root`@'192.168.0.6' 
    GO
    GRANT CREATE VIEW ON *.* TO `root`@'192.168.0.6'
    

    Questo e' lo script che bisogna eseguire per un utente con nome 'root', che si connette al server MySQL da un pc con IP '192.168.0.6' e ha come password 'password'.

    Tale utente ha TUTTI I DIRITTI possibili: puo' fare qualunque cosa!

    NON PUOI avere utenti senza password.

    L'unico utente senza password e' 'root' che si connette da '127.0.0.1'

    Questo script DEVE NECESSARIAMENTE essere eseguito da 'root' che accede a MySQL da '127.0.0.1', almeno la prima volta.

    Con questo crei un'altro utente 'root', che accede da un IP diverso (in questo caso 192.168.0.6, ma ovviamente questa e' la configurazione che ho usato io, tu avrai altri IP), e che puo', a sua volta, creare altri utenti.

    La gestione degli utenti e' una questione delicata.

    Fondamentalmente dovresti avere:

    1) un superuser (classico 'root') che puo' fare qualunque cosa

    2) un 'amministratore di database' cioe' che puo' accedere ad uno specifico database (ma solo a quello) e puo' creare, cancellare tabelle, view, trigger, ecc

    3) un 'utente generico' che puo' fare solo select, insert, delete all'interno delle tabelle presenti nel database. Ma non puo' creare, modificare o rimuovere tabelle

    Questo a grandi linee
  • Re: Abilitare connessione remota su mysql

    PS: forse, ma da provare, nel mio caso funziona, ma non e' detto che sia generalizzabile (bisogna andare a spulciare il manuale), se usi

    '<username>'@'%'

    L'utente con <username> puo' accedere a MySQL da QUALUNQUE IP.

    Nota/1: una qualche configurazione del genere ci deve neccessariamente essere!!!
    C'e' solo il problema di trovarla!

    Nota/2: mysql-workbench ti aiuta molto nella gestione degli utenti: non serve scrivere a manina lo script indicato precedentemente, lo fai direttamente via un po' di click!
  • Re: Abilitare connessione remota su mysql

    Grazie mille di cuore ,ora è piu' chiaro.
Devi accedere o registrarti per scrivere nel forum
7 risposte