GNU/Linux >> Znalost Linux >  >> Linux

Povolte SSL a vzdálená připojení pro MySQL

Poznámka :Tento článek předpokládá, že jste na svém serveru nainstalovali a nakonfigurovali MySQL®.

Povolení SSL pro MySQL

Před instalací certifikátu SSL do databáze MySQL zálohujte a odstraňte výchozí soubory certifikátů. Pro tento krok si můžete vybrat svůj vlastní název adresáře. Tento příklad používá mysql-backup-certs adresář. Chcete-li provést následující kroky, přepněte na uživatele root.

  1. Vytvořte nový záložní adresář:

    mkdir -p ~/mysql-backup-certs/
    
  2. Přejděte na /var/lib/mysql a přesuňte každý výchozí certifikát do nově vytvořeného záložního adresáře:

    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. Restartujte MySQL spuštěním jednoho z následujících příkazů:

    service mysqld restart
    

    nebo

    systemctl restart mysqld
    
  4. Pomocí jednoho z následujících příkazů zkontrolujte mysqld stav:

    service mysqld status
    

    nebo

    systemctl status mysqld
    
  5. Zkontrolujte stav SSL z prostředí MySQL. Chcete-li to provést, přihlaste se do MySQL jako uživatel root:

    mysql -u root -p
    (Enter MySQL root password)
    
  6. Spuštěním následujícího dotazu zkontrolujte stav SSL v MySQL:

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

    Poznámka :Není nutné používat velká písmena. Příklad je používá k odlišení syntaxe příkazu od toho, na co se dotazujete.

    V předchozím příkazu chcete vidět stav SSL jakodeaktivováno a uživatel root je připojen bez SSL.

  7. Chcete-li povolit připojení SSL s naším vlastním certifikátem, úpravou souborumy.cnf soubor, spusťte jeden z následujících příkazů:

    vim /etc/my.cnf
    

    nebo

    nano /etc/my.cnf
    
  8. Najděte [mysqld] a přidejte následující konfigurační nastavení:

    # 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. Uložte a ukončete soubor. Poté restartujte MySQL spuštěním jednoho z následujících příkazů:

    service mysqld restart
    

    nebo

    systemctl restart mysqld
    
  10. Po zálohování MySQL se přihlaste zpět do prostředí MySQL:

    mysql -u root -p
    (Enter MySQL root password)
    
  11. Spusťte dotaz SSL znovu:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    
  12. Pokud hodnota sekce SSL ukazuje ano , SSL je povoleno pro MySQL. Stále však vidíte, že uživatel root není připojen pomocí SSL. To je normální. Pokud to chcete změnit, můžete vynutit, aby všechna uživatelská připojení localhost používala SSL. Musíte upravit my.cnf soubor znovu spuštěním jednoho z následujících příkazů:

    vim /etc/my.cnf
    

    nebo

    nano /etc/my.cnf
    
  13. Na konci zadejte následující konfiguraci:

    [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. Restartujte MySQL. Po zálohování MySQL se znovu přihlaste do shellu MySQL:

    mysql -u root -p
    (Enter MySQL root password)
    
  15. Spusťte znovu následující dotaz:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    

Pokud chcete pouze povolit připojení SSL z připojení localhost, jste hotovi. Pokud však chcete také povolit vzdálené přihlášení pro MySQL, čtěte dále.

Povolit vzdálené připojení pro MySQL

Následující pokyny umožňují vzdálená připojení pro MySQL. Navíc tito vzdálení uživatelé potřebují mít soubory certifikátu podepsané vaší certifikační autoritou (CA), aby se mohli připojit.

Tento příklad označuje (pomocí tří hvězdiček:*** ) nastavení vynucující podpis CA, pokud chcete povolit vzdálená připojení bez CA.

  1. K úpravě souboru /etc/my.cnf použijte preferovaný textový editor příkazového řádku soubor znovu:

    vim /etc/my.cnf
    

    nebo

    nano /etc/my.cnf
    
  2. V dolní části [mysqld] uveďte následující sekce:

    bind-address = *
    require_secure_transport = ON 		***
    
  3. Uložte a ukončete soubor pomocí :wq .

  4. Restartujte MySQL. Potvrďte, že MySQL znovu běží. Musíte se znovu přihlásit do shellu MySQL.

  5. Po přihlášení vytvořte uživatele spuštěním jednoho z následujících příkazů:

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

    nebo

    CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; 	***
    
  6. Poté, co tomuto uživateli udělíte oprávnění k databázím, ke kterým má mít oprávnění, vyprázdněte oprávnění k aktualizaci oprávnění MySQL z prostředí shellu:

    flush privileges;
    

Možná jste si všimli, že % umístěný za @ symbol v předchozím create user příkaz je to, co ve skutečnosti označuje uživatele jako vzdáleného uživatele.

Jako bonus, pokud máte uživatele, který přistupuje k MySQL pouze ze statické IP adresy, můžete zadat tuto IP adresu místo % umožnit tomuto uživateli přístup k MySQL ze své konkrétní IP adresy. Mějte však na paměti, že uživatel může přistupovat k databázi pouze z této IP adresy. Pokud se jejich IP adresa změní, již nemají přístup. To je důvod, proč většina správců používá obecné vzdálené nastavení % místo toho.

Nyní jste povolili připojení SSL a také vzdálený přístup k databázi MySQL.


Linux
  1. Jak povolit protokolování serveru DNS BIND pro sledování dotazů a odstraňování problémů?

  2. Whitelist IP v CSF pro vzdálená připojení MySQL

  3. Povolte SSL a vzdálená připojení pro MySQL

  1. Metody připojení MySQL

  2. Základy uživatele a databáze MySQL

  3. Zkontrolujte vzdálený certifikát - MySQL

  1. MySQL – ladění a optimalizace výkonu

  2. Jak povolit protokol pomalých dotazů pro MySQL

  3. Vzdálená plocha pro Mac a klávesové zkratky