GNU/Linux >> Linux Esercitazione >  >> Linux

Abilita SSL e connessioni remote per MySQL

Nota :Questo articolo presuppone che tu abbia installato e configurato MySQL® sul tuo server.

Abilita SSL per MySQL

Prima di installare il certificato SSL sul database MySQL, eseguire il backup e rimuovere i file del certificato predefinito. È possibile scegliere il nome della propria directory per questo passaggio. Questo esempio utilizza mysql-backup-certs directory. Per eseguire i seguenti passaggi, passa all'utente root.

  1. Crea una nuova directory di backup:

    mkdir -p ~/mysql-backup-certs/
    
  2. Vai a /var/lib/mysql directory e sposta tutti i certificati predefiniti nella directory di backup appena creata:

    cd /var/lib/mysql
    mv ca.pem ca-key.pem ~/mysql-backup-certs/
    mv server-key.pem server-cert.pem ~/mysql-backup-certs/
    mv client-key.pem client-cert.pem ~/mysql-backup-certs/
    mv private_key.pem public_key.pem ~/mysql-backup-certs/
    
  3. Riavvia MySQL eseguendo uno dei seguenti comandi:

    service mysqld restart
    

    o

    systemctl restart mysqld
    
  4. Usa uno dei seguenti comandi per controllare mysqld stato:

    service mysqld status
    

    o

    systemctl status mysqld
    
  5. Controlla lo stato SSL dall'interno della shell MySQL. Per fare ciò, accedi a MySQL come utente root:

    mysql -u root -p
    (Enter MySQL root password)
    
  6. Esegui la seguente query per verificare lo stato SSL in MySQL:

    SHOW GLOBAL VARIABLES LIKE '%ssl%';
    STATUS;
    

    Nota :Non è necessario utilizzare lettere maiuscole. L'esempio li usa per differenziare la sintassi dei comandi da ciò che stai interrogando.

    Nel comando precedente, vuoi vedere lo stato SSL come disabilitato e l'utente root è connesso senza SSL.

  7. Per abilitare la connessione SSL con il nostro certificato modificando il my.cnf file, esegui uno dei seguenti comandi:

    vim /etc/my.cnf
    

    o

    nano /etc/my.cnf
    
  8. Trova [mysqld] sezione e aggiungi le seguenti impostazioni di configurazione:

    # You will use your own SSL certificates directory for these. The following are examples only.
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/server-cert.pem
    ssl-key=/etc/pki/tls/private/server-key.pem
    
  9. Salva ed esci dal file. Quindi, riavvia MySQL eseguendo uno dei seguenti comandi:

    service mysqld restart
    

    o

    systemctl restart mysqld
    
  10. Dopo aver eseguito il backup di MySQL, accedi nuovamente alla shell MySQL:

    mysql -u root -p
    (Enter MySQL root password)
    
  11. Esegui nuovamente la query SSL:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    
  12. Se il valore della sezione SSL mostra , SSL è abilitato per MySQL. Tuttavia, vedi ancora che l'utente root non è connesso tramite SSL. E 'normale. Se desideri modificare questa impostazione, puoi forzare tutte le connessioni utente localhost a utilizzare SSL. Devi modificare my.cnf file di nuovo eseguendo uno dei seguenti comandi:

    vim /etc/my.cnf
    

    o

    nano /etc/my.cnf
    
  13. Immettere la seguente configurazione alla fine:

    [client]
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/client-cert.pem
    ssl-key=/etc/pki/tls/private/client-key.pem
    
  14. Riavvia MySQL. Dopo aver eseguito il backup di MySQL, accedi nuovamente alla shell MySQL:

    mysql -u root -p
    (Enter MySQL root password)
    
  15. Esegui nuovamente la seguente query:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    

Se vuoi solo abilitare le connessioni SSL dalle connessioni localhost, allora hai finito. Tuttavia, se vuoi abilitare anche gli accessi remoti per MySQL, continua a leggere.

Abilita Ccnnections remote per MySQL

Le seguenti istruzioni abilitano le connessioni remote per MySQL. Inoltre, questi utenti remoti devono disporre di file di certificato firmati dall'autorità di certificazione (CA) per connettersi.

Questo esempio indica (usando tre asterischi:*** ) l'impostazione per forzare la firma della CA se si desidera consentire connessioni remote senza la CA.

  1. Usa il tuo editor di testo da riga di comando preferito per modificare /etc/my.cnf file di nuovo:

    vim /etc/my.cnf
    

    o

    nano /etc/my.cnf
    
  2. Includi quanto segue nella parte inferiore di [mysqld] sezione:

    bind-address = *
    require_secure_transport = ON 		***
    
  3. Salva ed esci dal file usando :wq .

  4. Riavvia MySQL. Conferma che MySQL è di nuovo in esecuzione. Devi accedere di nuovo alla shell MySQL.

  5. Dopo aver effettuato l'accesso, crea l'utente eseguendo uno dei seguenti comandi:

    CREATE USER 'example'@'%' IDENTIFIED BY 'password';
    

    o

    CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; 	***
    
  6. Dopo aver concesso a questo utente i permessi ai database per i quali vuoi che dispongano dei permessi, svuota i privilegi per aggiornare i permessi MySQL dalla shell:

    flush privileges;
    

Potresti aver notato che il % situato dopo il @ simbolo nel precedentecreate user comando è ciò che in realtà denota l'utente come utente remoto.

Come bonus, se hai un utente che accede a MySQL solo da un indirizzo IP statico, puoi inserire quell'indirizzo IP al posto del % per consentire a quell'utente di accedere a MySQL dal proprio indirizzo IP specifico. Tuttavia, si noti che l'utente può accedere al database solo da quell'indirizzo IP. Se il loro indirizzo IP cambia, non hanno più accesso. Ecco perché la maggior parte degli amministratori utilizza l'impostazione remota generale di % invece.

Ora hai abilitato le connessioni SSL e l'accesso remoto al tuo database MySQL.


Linux
  1. MySQL – Ottimizzazione e ottimizzazione delle prestazioni

  2. Come abilitare la registrazione del server DNS BIND per monitorare le query e per la risoluzione dei problemi?

  3. Come abilitare il registro delle query lente per MySQL

  4. Abilita SSL e connessioni remote per MySQL

  5. Come calcolare max_connections per PostgreSQL e default_pool_size per pgbouncer?

Come consentire connessioni remote a MySQL

Come aggiungere host Linux e Windows remoti a Icinga 2 per il monitoraggio

Come abilitare SSL e connessioni remote per MySQL su CentOS 7

Monitora le connessioni e le query MySQL con mytop

Come consentire connessioni remote a MySQL

Controlla il certificato remoto - MySQL