concedere l’accesso remoto del database MySQL da qualsiasi indirizzo IP

Sono a conoscenza di questo comando:

GRANT ALL PRIVILEGES ON database.* TO 'user'@'yourremotehost' IDENTIFIED BY 'newpassword'; 

Ma poi mi consente solo di concedere un particolare indirizzo IP per accedere a questo database MySQL remoto. Cosa succede se lo desidero in modo che qualsiasi host remoto possa accedere a questo database MySQL? Come lo faccio? Fondamentalmente sto rendendo pubblico questo database in modo che tutti possano accedervi.

 TO 'user'@'%' 

% è un carattere jolly – puoi anche fare '%.domain.com' o '%.123.123.123' e cose del genere se ne hai bisogno.

Abilita accesso remoto (Concedi) Home / Esercitazioni / Mysql / Abilita accesso remoto (Concessione) Se si prova a connettersi al proprio server mysql dalla macchina remota e si verifica un errore come di seguito, questo articolo fa al caso vostro.

ERRORE 1130 (HY000): l’host “1.2.3.4” non può connettersi a questo server MySQL

Cambia configurazione mysql

Inizia con la modifica del file di configurazione mysql

 vim /etc/mysql/my.cnf 

Commenta le seguenti righe.

 #bind-address = 127.0.0.1 #skip-networking 

Se non trovi la linea skip-networking, aggiungila e commentala.

Riavvia il server mysql.

 ~ /etc/init.d/mysql restart 

Cambia privilegio GRANT

Potresti essere sorpreso di vedere anche dopo la modifica di cui sopra non hai accesso remoto o accesso ma non in grado di accedere a tutti i database.

Per impostazione predefinita, il nome utente e la password di mysql in uso possono accedere a mysql-server localmente. Quindi è necessario aggiornare i privilegi.

Esegui un comando come sotto per accedere da tutte le macchine. (Sostituisci USERNAME e PASSWORD con le tue credenziali).

 mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 

Esegui un comando come sotto per consentire l’accesso da un IP specifico. (Sostituisci USERNAME e PASSWORD con le tue credenziali).

 mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 

Puoi sostituire 1.2.3.4 con il tuo IP. È ansible eseguire il comando precedente più volte per ottenere l’accesso da più IP.

Puoi anche specificare USERNAME e PASSWORD separati per l’accesso remoto.

Puoi controllare il risultato finale:

 SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%"; 

Infine, potresti anche dover eseguire:

 mysql> FLUSH PRIVILEGES; 

Test di connessione

Da terminale / riga di comando:

 mysql -h HOST -u USERNAME -pPASSWORD 

Se si ottiene una shell mysql, non dimenticare di eseguire i database show; per verificare se si dispone dei privilegi corretti da macchine remote.

Suggerimento bonus: revoca l’accesso

Se accidentalmente concedi l’accesso a un utente, meglio avere a portata di mano l’opzione di revoca.

In seguito revocheranno tutte le opzioni per USERNAME da tutte le macchine:

 mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%'; Following will revoke all options for USERNAME from particular IP: mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4'; Its better to check information_schema.user_privileges table after running REVOKE command. 

Se vedi il privilegio di USAGE dopo aver eseguito il comando REVOKE, va bene. È buono come nessun privilegio. Non sono sicuro che possa essere revocato.

Supponendo che il passo precedente sia completato e che la porta MySql 3306 sia accessibile in remoto; Non dimenticare di associare l’indirizzo IP pubblico nel file di configurazione mysql.

Ad esempio sul mio server Ubuntu:

 #nano /etc/mysql/my.cnf 

Nel file, cerca il blocco di sezione [mysqld] e aggiungi il nuovo indirizzo di bind, in questo esempio è 192.168.0.116. Assomiglierebbe a questo

 ...... ..... # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 bind-address = 192.168.0.116 ..... ...... 

è ansible rimuovere il binding localhost (127.0.0.1) se si sceglie, ma in seguito è necessario fornire un indirizzo IP specifico per accedere al server sul computer locale.

Quindi l’ultimo passo è riavviare il server MySql (su ubuntu)

 stop mysql start mysql 

o #/etc/init.d/mysql restart per altri sistemi

Ora è ansible accedere al database MySQL da remoto tramite:

 mysql -u username -h 192.168.0.116 -p 

Per tutti coloro che hanno fatto i conti con questo, ecco come ho avuto modo di concedere i privilegi, spero che aiuti qualcuno

 GRANT ALL ON yourdatabasename.* TO [email protected]'%' IDENTIFIED BY 'yourRootPassword'; 

Come notato, % è un carattere jolly e questo consentirà a qualsiasi indirizzo IP di connettersi al tuo database. L’ipotesi che ho qui è che quando ti connetti avrai un utente con il nome root (che è comunque il default). Inserisci la password di root e sei a posto. Si noti che non ho virgolette singole ( ' ) attorno alla radice dell’utente.

Le modifiche al file di configurazione sono necessarie per abilitare le connessioni tramite localhost.

Per connettersi tramite IP remoti, effettuare il login come utente “root” ed eseguire le query sottostanti in mysql.

 CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION; CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; 

Questo creerà un nuovo utente accessibile su localhost e da IP remoti.

Commenta anche la riga sottostante dal tuo file my.cnf che si trova in /etc/mysql/my.cnf

 bind-address = 127.0.0.1 

Riavvia il tuo mysql usando

 sudo service mysql restart 

Ora dovresti essere in grado di connetterti da remoto al tuo mysql.

Esegui il seguente:

 $ mysql -u root -p mysql> GRANT ALL ON *.* to [email protected]'ipaddress' IDENTIFIED BY 'mysql root password'; mysql> FLUSH PRIVILEGES; mysql> exit 

Quindi provare una connessione dall’indirizzo IP specificato:

 mysql -h address-of-remove-server -u root -p 

Dovresti essere in grado di connetterti.

Usa questo comando:

 GRANT ALL ON yourdatabasename.* TO [email protected]'%' IDENTIFIED BY 'yourRootPassword'; 

Poi:

 FLUSH PRIVILEGES; 

Quindi commenta la riga sottostante nel file “/etc/mysql/mysql.conf.d/mysqld.cnf” (è richiesto!):

 bind-address = 127.0.0.1 

Per me va bene! 🙂

È ansible aumentare il problema di MariaDB tramite questo comando :

Nota:

 GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'mysql root password'; 

% è un carattere jolly. In questo caso, si riferisce a tutti gli indirizzi IP.

 GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress' 
  • INIZIA MySQL usando l’utente amministratore
    • mysql -u admin-user -p (INSERISCI PASSWORD SU PROMPT)
  • Crea un nuovo utente:
    • CREA UTENTE ‘newuser’ @ ‘%’ IDENTIFICATO DA ‘password’; (% -> anyhost)
  • Privilegi di concessione:
    • GRANT SELECT, DELETE, INSERT, UPDATE ON db_name. * TO ‘newuser’ @ ‘%’;
    • FLUSH PRIVILEGES;

Se si esegue l’istanza EC2, non dimenticare di aggiungere le regole in entrata nel gruppo di sicurezza con MYSQL / Aurura.

Modifica file:

/etc/mysql/percona-server.cnf

Aggiungi sotto il codice nel file.

[mysqld] bind-address = 0.0.0.0

Crea utente per l’accesso remoto.

 $ mysql -u root -p mysql> GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'tejastank'; mysql> FLUSH PRIVILEGES; mysql> exit 

Tutto il server Linux funziona,

Per MSWin c: \ Trova percorso insatallation \ percorso file

È necessario modificare il file di configurazione mysql:

Inizia con la modifica del file di configurazione mysql

 vim /etc/mysql/my.cnf 

Inserisci:

 bind-address = 0.0.0.0 

Nei pannelli del sito web come cPanel è ansible aggiungere una singola percentuale (segno percentuale) in nomi host consentiti per accedere al proprio database MySQL.

Aggiungendo una singola % puoi accedere al tuo database da qualsiasi IP o sito Web anche da applicazioni desktop.

Ad esempio nel mio CentOS

sudo gedit /etc/mysql/my.cnf

commentare le seguenti righe

# bind-address = 127.0.0.1

poi

sudo service mysqld restart

Basta creare l’utente in un database come

GRANT ALL PRIVILEGES ON .* TO ''@'%' IDENTIFIED BY ''

Quindi vai a

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf e cambia la linea bind-address = 127.0.0.1 in bind-address = 0.0.0.0

Successivamente è ansible connettersi a quel database da qualsiasi IP.

Puoi disabilitare tutta la sicurezza modificando /etc/my.cnf:

 skip-grant-tables