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