GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat MySQL 8 na Debian 10

MySQL je open-source relační databázový systém, který funguje na mnoha operačních systémech, včetně Windows, Linux, macOS a FreeBSD. Je to pravděpodobně nejpopulárnější OpenSource RDBMS a centrální součást LAMP a LEMP Stacků. Mnoho aplikací závisí na MySQL, jako je WordPress, Joomla, TYPO3, phpBB a mnoho dalších.

Do MySQL 8 bylo přidáno několik nových funkcí, včetně podpory JSON, slovníku transakčních dat, trvalé konfigurace runtime, úložiště dokumentů, tipů pro optimalizaci, rolí SQL, CTE, okenních funkcí, neviditelných indexů a mnoha dalších.

Co se naučíte?

V tomto tutoriálu se naučíte některé věci související se serverem MySQL a níže jsou podrobnosti o:

  • Nainstalujte MySQL Server 8 na Debian Buster 10
  • Nastavit heslo kořenového adresáře MySQL
  • Bezpečné nasazení serveru MySQL (změna vazební adresy, portu atd.)
  • Nastavte SSL a povolte vzdálené připojení pro server MySQL
  • Nainstalujte a nakonfigurujte phpMyAdmin
  • Základní dotaz MySQL pro vytváření uživatele, databáze atd.
  • Nastavte automatické zálohování databází MySQL

Předpoklady

Pro tuto příručku nainstalujeme MySQL Server 8.04 na nejnovější Debian Buster 10 s 2 GB RAM a 4 CPU. Také potřebujeme oprávnění root pro instalaci balíčků a úpravu systémových konfigurací.

Krok 1 – Přidání úložiště MySQL

Pro tento tutoriál nainstalujeme MySQL Server 8 z oficiálního úložiště MySQL. K tomu potřebujeme přidat oficiální úložiště MySQL na náš Debian Server.

Před přidáním úložiště MySQL nainstalujte balíček 'GnuPG' pomocí příkazu apt níže.

sudo apt install gnupg -y

Jakmile je veškerá instalace dokončena, stáhněte si úložiště MySQL APT a přidejte jej do svého systému.

wget -q http://repo.mysql.com/mysql-apt-config_0.8.15-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb

Ponechte úložiště jako výchozí a vyberte 'OK '.

A bylo přidáno oficiální úložiště MySQL.

Dále aktualizujte všechna dostupná úložiště v systému Debian pomocí následujícího příkazu.

sudo apt update

A získáte oficiální úložiště MySQL ze seznamu níže.

Jak je vidět, bylo přidáno oficiální úložiště MySQL a jsme připraveni nainstalovat MySQL Server 8.0 do Debian Buster 10.

Krok 2 – Instalace serveru MySQL

Chcete-li nainstalovat MySQL Server 8.0 do systému Debian, spusťte níže uvedený příkaz apt.

sudo apt install mysql-server

Nyní zadejte heslo root pro vaši instalaci MySQL a zvolte 'OK '.

Opakujte heslo pro kořenového uživatele MySQL.

Poté budete požádáni o konfiguraci výchozího ověřovacího pluginu MySQL. Vyberte možnost Šifrování silného hesla ' podle doporučení a zvolte 'OK '.

A instalace MySQL Server 8.0 je dokončena.

Nyní zkontrolujte službu MySQL pomocí následujícího příkazu.

systemctl is-enabled mysql
systemctl status mysql

Níže je výsledek, který dostanete.

Výsledkem je, že služba MySQL je na serveru Debian spuštěna. Služba bude spuštěna automaticky při každém spuštění systému.

Krok 3 – Zabezpečte nasazení MySQL pomocí mysql_secure_password

V tomto kroku vylepšíme zabezpečení instalace serveru MySQL pomocí 'mysql_secure_installation ' nástroj příkazového řádku.

'mysql_secure_installation ' vám ​​pomůže zlepšit nasazení MySQL z různých aspektů, jako je nastavení síly hesla, zakázání vzdáleného přístupu a odstranění výchozích anonymních uživatelských a testovacích databází.

Nyní spusťte 'mysql_secure_installation ' příkaz na vašem shellu.

mysql_secure_installation

Na začátku instalace MySQL jste již nakonfigurovali heslo root pro MySQL. Nyní zadejte heslo a pokračujte v procesu.

Enter the password for user root: TYPE YOUR MYSQL ROOT PASSWORD

Poté zadejte „Y ' pro konfiguraci 'VALIDATE PASSWORD '.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of the password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

Nyní vyberte úroveň zásad ověřování hesla pro všechny uživatele. Zadejte „2 ' pro nastavení 'STRONG ' zásady úrovně hesla.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters, and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Nyní příkaz 'mysql_secure_installation' zkontroluje vaši aktuální sílu hesla. Jak je vidět, síla našeho aktuálního hesla je '50 '. Nyní zadejte „Y ' pro změnu aktuálního hesla na nové silnější heslo.

Estimated strength of the password: 50 
Change the password for root? ((Press y|Y for Yes, any other key for No) : Y

Nyní zadejte své silné heslo a ujistěte se, že máte skóre 100 a poté zadejte „Y ' pokračovat s novým heslem.

New password: 

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided? (Press y|Y for Yes, any other key for No) : Y

V důsledku toho byla komponenta MySQL 'VALIDATE PASSWORD' nakonfigurována se zásadou silných hesel a bylo vytvořeno nové heslo MySQL.

Dále budete požádáni o odebrání výchozího anonymního uživatele. Zadejte „Y ' pro odebrání výchozího anonymního uživatele pro vaši instalaci.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without creating a user account. This is intended only for testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

Dále zadejte „Y ' znovu pro zakázání vzdáleného přihlášení k MySQL a pokud chcete, aby byl server MySQL přístupný pouze lokálně.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y

Poté odeberte výchozí databázi „test“ ze serveru MySQL. Zadejte „Y a pokračujte stisknutím klávesy Enter.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y

Dále zadejte 'Y' znovu načíst tabulky oprávnění. Ve skutečnosti a byly použity nové změny konfigurace MySQL.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Výsledkem je, že bezpečné nasazení serveru MySQL pomocí skriptu 'mysql_secure_installation' bylo dokončeno. A v této fázi jste povolili komponentu 'VALIDATE PASSWORD' se zásadou silného hesla úrovně '2' a také bylo nakonfigurováno nové silné heslo root pro MySQL.

Krok 4 – Zabezpečení serveru MySQL pomocí dodatečné konfigurace

Pro tento tutoriál přidáme další konfiguraci, abychom zlepšili nasazení serveru MySQL. Zadáme adresu vazby serveru MySQL, změníme výchozí port, zakážeme načítání datového souboru a nastavíme politiku vypršení platnosti hesla pro všechny uživatele MySQL.

Nyní přejděte do adresáře '/etc/mysql/conf.d/' a vytvořte novou konfiguraci 'mysqld.cnf' pomocí editoru vim.

cd /etc/mysql/conf.d/
vim mysqld.cnf

Vložte do něj následující konfiguraci.

[mysqld]

# MySQL running on 127.0.0.1 with port 8320
bind-address=127.0.0.1
port=8320

# Disable LOAD DATA LOCA
local-infile=0

# Password Expiration to 60 Days
default_password_lifetime=60

# MySQLX Plugin running on 127.0.0.1 with port 8321
mysqlx_bind_address=127.0.0.1
mysqlx_port=8321

Uložit a zavřít.

Dále restartujte službu MySQL a zkontrolujte otevřené porty v systému pomocí následujícího příkazu.

systemctl restart mysql
ss -plnt

Níže je výsledek, který dostanete.

Jak je vidět, MySQL Server je spuštěn a běží na lokální IP adrese '127.0.0.1' na jiném než výchozím TCP portu '8320'.

Dále, abyste se přihlásili do prostředí MySQL pomocí vlastního portu, můžete použít příkaz 'mysql' s možností '-P port', jak je uvedeno níže.

mysql -u root -P 8320 -p

Zadejte heslo uživatele root pro server MySQL.

Jakmile se přihlásíte, spusťte následující dotaz a zkontrolujte konfiguraci portu serveru MySQL.

show variables like 'port';

A získáte, že server MySQL běží na vlastním portu '8320', jak je uvedeno níže.

Výsledkem je, že jste nakonfigurovali server MySQL tak, aby běžel na místní IP adrese '127.0.0.1' s vlastním TCP portem '8320'.

Krok 5 – Zabezpečte a povolte vzdálené připojení MySQL pomocí SSL

Předpokládejme, že chcete nasadit server MySQL v interní síti a umožnit ostatním hostitelům ve stejné síti přístup k databázím na serveru MySQL. V takovém případě se doporučuje povolit SSL pro nasazení serveru MySQL.

V tomto kroku se naučíte, jak nastavit a povolit SSL a vzdálený přístup na serveru MySQL.

Generovat certifikáty SSL

Ve výchozím nastavení jsou certifikáty SSL serveru MySQL 8.0 generovány automaticky během instalace. Všechny výchozí certifikáty SSL jsou dostupné v adresáři '/var/lib/mysql'.

Pro tento krok vygenerujeme nový certifikát SSL pro server MySQL pomocí 'mysql_ssl_rsa_setup ' nástroj příkazového řádku.

Nyní vytvořte nový adresář SSL '/etc/mysql/certs' a změňte vlastnictví tohoto adresáře na uživatele 'mysql'.

mkdir -p /etc/mysql/certs/
sudo chown -R mysql:mysql /etc/mysql/certs

Dále vygenerujte nové certifikáty SSL pro server MySQL pomocí následujícího příkazu. A nezapomeňte změnit '--suffix=STRING ' s vaším Common Name.

sudo mysql_ssl_rsa_setup --suffix=HakasMySQLSrv --uid=mysql --datadir=/etc/mysql/certs/

Po dokončení byly v adresáři '/etc/mysql/certs' vygenerovány nové certifikáty SSL pro server MySQL.

Zkontrolujte své certifikáty SSL pomocí následujícího příkazu.

ls -lah /etc/mysql/certs/
openssl verify -CAfile /etc/mysql/certs/ca.pem /etc/mysql/certs/server-cert.pem /etc/mysql/certs/client-cert.pem

Níže je výsledek, který dostanete.

Nové certifikáty SSL pro server MySQL byly vygenerovány do adresáře '/etc/mysql/certs/'.

Povolení SSL a vzdáleného přístupu MySQL Server

Chcete-li povolit SSL a vzdálený přístup na serveru MySQL, budete muset změnit možnost 'bind-address' s IP adresou vaší interní sítě a přidat konfiguraci SSL pro MySQL.

Nyní přejděte do adresáře '/etc/mysql/conf.d/' a upravte konfiguraci, kterou jsme vytvořili na 'mysqld.cnf' pomocí editoru vim.

cd /etc/mysql/conf.d/
vim mysqld.cnf

Změňte 'bind-address' s vaší interní IP adresou, jak je uvedeno níže.

bind-address=172.16.0.3

Dále přidejte konfiguraci SSL pro server MySQL níže a změňte cestu SSL na svou vlastní.

ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem

Kromě toho můžete u všech svých klientů určit verzi TLS a přinutit je používat pouze zabezpečené připojení SSL pomocí následující konfigurace.

#require_secure_transport=ON
tls_version=TLSv1.1,TLSv1.2

Uložit a zavřít.

Poté restartujte službu MySQL, abyste použili novou konfiguraci, a zkontrolujte IP adresu serveru MySQL pomocí následujícího příkazu.

systemctl restart mysql
ss -plnt

A získáte, že MySQL Server je v provozu na IP adrese interní sítě s povoleným SSL.

Nastavení klienta a testování připojení SSL

Chcete-li se připojit k serveru MySQL z jiného hostitele/klienta, musíte vytvořit nového uživatele MySQL, zkopírovat klientské certifikáty a přidat konfiguraci MySQL pro klienta.

Přihlaste se do prostředí MySQL pomocí následujícího příkazu.

mysql -u root -P 8320 -p

Nyní vytvořte nového uživatele MySQL pro vzdálené připojení pomocí následujícího dotazu.

CREATE USER 'remoteuser'@'%' IDENTIFIED WITH mysql_native_password BY 'MyRemoteUserPasswordMySQL39==' REQUIRE SSL;
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Zadejte „exit ' pro odhlášení z prostředí MySQL.

Dále musíte zkopírovat CA a klientský certifikát a klíč do klientského počítače pomocí příkazu SCP, jak je uvedeno níže.

scp /etc/mysql/certs/ca.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-cert.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-key.pem [email protected]:/certificates/directory/

Poté se připojte ke svému klientskému počítači a vytvořte novou konfiguraci pomocí editoru vim.

vim ~/.my.cnf

Vložte konfiguraci klienta MySQL, jak je uvedeno níže, a změňte cestu klientského certifikátu SSL na svou vlastní.

[client]
ssl-ca=/home/gpk/certs/ca.pem
ssl-cert=/home/gpk/certs/client-cert.pem
ssl-key=/home/gpk/certs/client-key.pem

Uložit a zavřít.

Chcete-li se připojit ke vzdálenému serveru MySQL pomocí vlastního portu, spusťte níže uvedený příkaz 'mysql'.

mysql -u remoteuser -h 172.16.0.3 -P 8320 -p

Jakmile se přihlásíte, zkontrolujte stav připojení pomocí následujícího dotazu.

STATUS
SELECT * FROM performance_schema.session_status
       WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');

Níže je výsledek, který dostanete.

Jak je vidět, přihlásili jste se pomocí zabezpečeného připojení SSL TLSv1.2 k serveru MySQL.

V důsledku toho byl povolen vzdálený přístup pomocí zabezpečeného připojení SSL pro server MySQL.

Krok 6 – Instalace a konfigurace phpMyAdmin

V tomto kroku se dozvíte, jak nainstalovat nejnovější phpMyAdmin s webovým serverem Apache. Dozvíte se také, jak se připojit k serveru MySQL na vzdáleném hostiteli pomocí vlastního portu a bezpečně se připojit prostřednictvím SSL z phpMyAdmin.

Než budete pokračovat, nainstalujte některé závislosti balíčků pomocí příkazu apt níže.

sudo apt install apache2 libapache2-mod-php php-imagick php-phpseclib php-php-gettext php-common php-mysql php-gd php-imap php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp unzip

Dále přejděte do adresáře '/var/www/html' a stáhněte si nejnovější zdrojový kód phpMyAdmin.

cd /var/www/html/
wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

Nyní rozbalte zdrojový kód phpMyAdmin a přejmenujte jej na nový adresář s názvem 'phpMyAdmin'.

tar -xf phpMyAdmin-latest-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin

Dále přejděte do adresáře '/var/www/phpMyAdmin' a zkopírujte výchozí konfigurační soubor do 'config.inc.php'.

cd /var/www/html/phpMyAdmin/
cp config.sample.inc.php config.inc.php

Upravte konfigurační soubor 'config.inc.php' pomocí editoru vim.

vim config.inc.php

Vygenerujte tajný kód blowfish pomocí tohoto odkazu a vložte kód do řádku 'blowfish_secret', jak je uvedeno níže.

$cfg['blowfish_secret'] = '6}2]RFleN-JT=/vXD}L/0j0v.YALV/e3'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Dále zadejte podrobnosti o serveru MySQL do řádku 'Server Configuration', jak je uvedeno níže.

/**
 * Servers configuration
 */
$i = 0;

.....
/* Custom MySQL Server Configuration */
$cfg['Servers'][$i]['host'] = '172.16.0.3';
$cfg['Servers'][$i]['port'] = '8320';
.....

Poté vložte následující konfiguraci, abyste povolili komunikaci SSL z phpMyAdmin na MySQL Server. A nezapomeňte změnit cestu k certifikátům klienta a CA za vlastní a ujistěte se, že uživatel „www-data“ má přístup k certifikátům CA a klientským certifikátům.

/* SSL Configuration */
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_key'] = '/opt/mysql/certs/client-key.pem';
$cfg['Servers'][$i]['ssl_cert'] = '/opt/mysql/certs/client-cert.pem';
$cfg['Servers'][$i]['ssl_ca'] = '/opt/mysql/certs/ca.pem';

/* Disable SSL Verification for Self-signed certificates */
/* The Good: Connection between phpMyAdmin and MySQL Server are Encrypted */
/* But you're still vulnerable with the MiTM */
$cfg['Servers'][$i]['ssl_verify'] = false;

/* Hide Some Databases */
$cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|sys|mysql)';

Uložit a zavřít.

Nyní změňte vlastnictví adresáře 'phpMyAdmin' na uživatele 'www-data'.

sudo chown -R www-data:www-data /var/www/html/phpMyAdmin

A instalace phpMyAdmin a konfigurace phpMyAdmin byla dokončena.

Nyní se přihlaste k serveru MySQL, zkontrolujte stav MySQL SSL, vytvořte novou databázi a uživatele pro phpMyAdmin.

Přihlaste se k serveru MySQL pomocí následujícího příkazu.

mysql -u root -P 8329 -p

Nyní zkontrolujte stav SSL pomocí následujících dotazů.

SHOW VARIABLES LIKE '%ssl%';
STATUS

Níže je výsledek, který dostanete.

Jak je vidět, MySQL server je v provozu s povoleným SSL a používá SSL certifikáty, které jsme vygenerovali. Jsme také připojeni k serveru MySQL prostřednictvím zabezpečeného připojení SSL pomocí konfiguračního souboru '~/.my.cnf'.

Dále vytvořte novou databázi a uživatele s názvem 'phpmyadmin' pomocí následujícího dotazu.

CREATE DATABASE phpmyadmin;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED WITH mysql_native_password BY 'phpMyAdminAdmn352#$';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Zadejte „exit ' pro odhlášení z prostředí MySQL.

Nyní otevřete webový prohlížeč a do adresního řádku zadejte IP adresu serveru s cestou 'phpMyAdmin'.

http://ip-server-ip/phpMyAdmin/

Na přihlašovací stránce phpMyAdmin zadejte uživatele 'phpmyadmin' s heslem, které jsme vytvořili nahoře, a klikněte na tlačítko 'GO'.

A získáte phpMyAdmin Dashboard, jak je uvedeno níže.

V důsledku toho byla instalace a konfigurace phpMyAdmin dokončena.

Krok 7 – Vytvoření uživatele a databáze MySQL

V tomto kroku se naučíte primární použití dotazů MySQL pro správu uživatele, databáze a základní příkaz mysqldump pro zálohování databáze.

Připojte se k serveru MySQL a zkontrolujte stav připojení

Chcete-li se připojit k serveru MySQL, můžete použít příkazový řádek 'mysql'. A ve výchozím nastavení budou všechna připojení z místního serveru MySQL používat Unixový soket, což připojení SSL nečiní připojení o nic bezpečnější.

Připojte se k serveru MySQL s výchozí konfigurací pomocí následujícího příkazu.

mysql -u username -p

Pokud váš MySQL Server běží na vlastním portu, použijte níže uvedenou možnost '-P port'.

mysql -u root -P 8320 -p

Pokud váš server MySQL běží v místní síti s vlastním portem, použijte níže uvedené možnosti 'h host/IP Address' a '-P port'.

mysql -u root -h 172.16.0.3 -P 8320 -p

Jakmile se připojíte k serveru MySQL, spusťte následující dotaz a zkontrolujte stav připojení.

STATUS

A získáte následující výsledek.

A jste úspěšně připojeni k serveru MySQL.

Vytvořit a zobrazit databázi

Po připojení k prostředí MySQL se naučíte, jak vytvořit databázi MySQL, vybrat databázi, vytvářet tabulky a vkládat data.

Chcete-li vytvořit novou databázi MySQL, použijte následující dotaz.

CREATE DATABASE hakase_db;
CREATE DATABASE yume_db;
CREATE DATABASE juice_db;

Nyní zkontrolujte všechny databáze seznamů na vašem serveru MySQL pomocí následujícího dotazu.

SHOW DATABASES;
SHOW DATABASES LIKE "%db%";

Dále můžete přepnout a vybrat databázi pomocí následujícího dotazu.

USE hakase_db;

Dále můžete ve své databázi vytvořit novou tabulku pomocí dotazu 'CREATE TABLE', jak je uvedeno níže.

CREATE TABLE users (first VARCHAR(20), last VARCHAR(20),
        email VARCHAR(20), birth DATE, country VARCHAR(20));

Nyní můžete použít 'DESCRIBE table-name' ke kontrole všech polí ve vaší databázi.

DESCRIBE users;

A získáte všechna pole podrobností v tabulce 'uživatelé'.

Dále můžete ručně vložit data do tabulky pomocí dotazu „INSERT“, jak je uvedeno níže.

INSERT INTO users
       VALUES ('Mark','Mine','[email protected]','1999-03-20','Canada');

Nyní jste úspěšně vložili data do databáze MySQL. Dále zkontrolujte všechna data v tabulce pomocí dotazu 'SELECT', jak je uvedeno níže.

SELECT * FROM users;
SELECT email, birth, country FROM users;

A získáte všechna data ze své tabulky.

Vytvořit uživatele MySQL

Po vytvoření databáze se naučíte, jak vytvořit uživatele na serveru MySQL a udělit uživatelská oprávnění k databázím.

Základním dotazem MySQL pro vytvoření uživatele je použití dotazu 'CREATE USER'. Poté můžete svému uživateli udělit oprávnění k databázi pomocí příkazu 'GRANT' podle jeho možností. A nakonec musíte znovu načíst tabulky grantů, abyste použili nové změny.

  • Základní

Vytvořte nového uživatele s názvem '[email protected]' s heslem 'MyHakasePasswordMySQL39==' a povolte uživateli všechna oprávnění 'hakase_db' pomocí následujícího dotazu.

CREATE USER 'hakase'@'localhost' IDENTIFIED BY 'MyHakasePasswordMySQL39==';
GRANT ALL PRIVILEGES ON hakase_db.* TO 'hakase'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Další informace:název hostitele „[email protected]“ je součástí názvu účtu. '@localhost' umožňuje uživateli pouze připojení z místního serveru. Pokud není zadáno, výchozí je '%', což umožňuje uživatelům odkudkoli.

  • Vytvořte uživatele pro vzdálený přístup pomocí specifického modulu pro ověřování

Vytvoříme nového uživatele, který se může přihlásit pouze z konkrétní IP adresy hostitele a použít konkrétní ověřovací plugin.

Vytvoříme nového uživatele s názvem 'yume', který se připojí přes klientskou IP '172.16.0.4' s autentizačním pluginem 'mysql_native_password' a uživateli bude umožněn přístup pouze k databázi 'yume_db'.

CREATE USER 'yume'@'172.16.0.4' IDENTIFIED WITH mysql_native_password BY 'MyYumePasswordMySQL39==';
GRANT ALL PRIVILEGES ON yume_db.* TO 'yume'@'172.16.0.4' WITH GRANT OPTION;
FLUSH PRIVILEGES;

V důsledku toho se uživatel 'yume' připojí k serveru MySQL pouze s IP adresou '172.16.0.4'. V opačném případě bude autentizace uživatele serverem MySQL odepřena.

  • Vytvořit uživatele a vynutit použití šifrovaného připojení SSL

Chcete-li uživatele přinutit k použití zabezpečeného připojení SSL, můžete použít možnost „VYŽADOVAT SSL“. Pokud zabezpečené připojení selže, nemůžete se připojit k serveru MySQL (nelze navázat připojení).

Pro bezpečnější scénář můžete použít dotaz 'REQUIRE X509', což znamená, že připojení k serveru MySQL je navázáno pouze tehdy, když počítač uživatele/klienta poskytl klientské a CA certifikáty.

Vytvořte nového uživatele s názvem 'juice' s názvem hostitele '%'. Tato volba názvu hostitele '%' umožňuje uživateli 'juice' připojit se z libovolné IP adresy, ale připojení bude navázáno, když klientský počítač poskytne certifikáty klienta a CA.

CREATE USER 'juice'@'%' IDENTIFIED WITH mysql_native_password BY 'MyJuicePasswordMySQL39==' REQUIRE X509;
GRANT ALL PRIVILEGES ON juice_db.* TO 'juice'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Výsledkem je, že uživatel „šťávy“ se může připojit k serveru MySQL, když počítač poskytl klientské a CA certifikáty.

Zobrazit všechny dostupné uživatele a granty

Po vytvoření všech uživatelů zkontrolujte všechny uživatele pomocí následujících dotazů.

SELECT User, Host FROM mysql.user;
SELECT User, Host, plugin FROM mysql.user;

Nyní získáte podrobnosti o uživateli, hostiteli a ověřovacích zásuvných modulech, které uživatelé používají.

Dále zkontrolujte všechna oprávnění uživatelů pomocí dotazu „ZOBRAZIT GRANTY“, jak je uvedeno níže.

SHOW GRANTS FOR 'hakase'@'localhost';
SHOW GRANTS FOR 'yume'@'172.16.0.3';
SHOW GRANTS FOR 'juice'@'%';

Nyní získáte podrobná oprávnění vašich uživatelů.

V důsledku toho jste se naučili primární použití serveru MySQL, včetně vytvoření databáze, vytvoření tabulky, vložení dat do tabulky, vytvoření a zobrazení uživatelů a zobrazení podrobných oprávnění každého uživatele.

Krok 8 – Další:Vytvoření přírůstkové zálohy databáze MySQL

V tomto kroku se naučíte primární použití příkazu 'mysqldump' pro zálohování všech databází MySQL. Příkazový řádek 'mysqldump' umožňuje zálohovat všechny databáze, konkrétní nebo více databází a zálohovací tabulky.

Než budete pokračovat, vytvořte záložní adresář a přejděte do něj.

mkdir -p ~/backup; cd ~/backup

A jste připraveni vytvořit zálohu databází MySQL pomocí nástroje 'mysqldump'.

Zálohovat všechny databáze

Chcete-li zálohovat všechny databáze na serveru MySQL, použijte příkaz mysqldump s níže uvedenou volbou '--add-databases'.

mysqldump -u root -P 8320 --all-databases -p > alldbs.sql

Nyní získáte všechny zálohy vašich databází do jediného souboru SQL s názvem 'alldbs.sql'.

Zálohování specifické databáze

Chcete-li zálohovat konkrétní databázi MySQL, zadejte název své databáze do příkazu mysqldump níže.

mysqldump -u root -P 8320 -p hakase_db > backup_hakase_db.sql

V důsledku toho získáte záložní soubor SQL z databáze 'hakase_db' pojmenované jako 'backup_hakase_db.sql' v adresáři zálohy.

Zálohování více databází

Pokud chcete vytvořit zálohu více databází (ne všech databází na serveru MySQL), použijte níže uvedenou možnost '--databases'.

mysqldump -u root -P 8320 -p --databases yume_db juice_db > multi-db-once.sql

V důsledku toho byl vytvořen záložní soubor pro vaše dvě databáze 'yume_db' a 'juice_db' s názvem 'multi-db-once.sql' soubor.

Automatické zálohování databáze MySQL

K nastavení automatické zálohy pro MySQL použijeme linuxový 'cron'. Vytvoříme nový bash skript pro databáze MySQL a spustíme jej automaticky v určitou dobu pomocí Linux Cronu.

Než budete pokračovat, přihlaste se do prostředí MySQL pomocí následujícího příkazu.

mysql -u root -P 8320 -p

Pomocí následujícího dotazu vytvořte nového záložního uživatele s určitými oprávněními.

CREATE USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyBackupPasswordMySQL39==';
GRANT PROCESS, SELECT, LOCK TABLES, SHOW VIEW, EVENT ON *.* TO 'backup'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Nyní zadejte 'exit' pro odhlášení z prostředí MySQL.

Dále vytvořte nový záložní adresář '/opt/backup/mysql' pro uložení všech záložních souborů databáze.

mkdir -p /opt/backup/mysql

Poté přejděte do adresáře '/usr/local/sbin' a vytvořte nový bash soubor 'auto_backup.sh' pomocí editoru vim.

cd /usr/local/sbin/
vim auto_backup.sh

Změňte podrobnosti uživatele, heslo a port na své vlastní a vložte do nich konfiguraci.

#!/bin/bash

# Basic configuration: datestamp e.g., YYYYMMDD
DATE=$(date +"%Y%m%d")

# Location of your backups (create the directory first!)
BACKUP_DIR="/opt/backup/mysql"

# MySQL login details
MYSQL_USER="backup"
MYSQL_PASSWORD="MyBackupPasswordMySQL39=="

# MySQL executable locations (no need to change this)
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

# MySQL databases you wish to skip
SKIPDATABASES="Database|information_schema|performance_schema|mysql"

# Number of days to keep the directories (older than X days will be removed)
RETENTION=14

# ---- DO NOT CHANGE BELOW THIS LINE ------------------------------------------
#
# Create a new directory into the backup directory location for this date
mkdir -p $BACKUP_DIR/$DATE

# Retrieve a list of all databases
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`

# Dumb the databases in seperate names and gzip the .sql file
for db in $databases; do
echo $db
$MYSQLDUMP --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done

# Remove files older than X days
find $BACKUP_DIR/* -mtime +$RETENTION -delete

Uložit a zavřít.

Now make the 'auto_backup.sh' script executable and run the script for testing purposes.

chmod +x auto_backup.sh
./auto_backup.sh

As a result, you will get your database backup files on the '/opt/mysql/backup-current-date' directory. Zkontrolujte pomocí následujícího příkazu.

ls -lah /opt/backup/mysql/
ls -lah /opt/backup/mysql/datedir/

Níže je výsledek, který dostanete.

As a result, you will get compressed files of your database backup, which means the script is working.

Next, create a new cronjob that will be running the MySQL auto backup script 'auto_backup.sh' every day at the time '00:00'.

Set the default editor to 'vim' and create a new cronjob as user root using the following command.

export EDITOR=vim
crontab -u root -e

Now paste the following configuration into it.

0 0 * * * sh /usr/local/sbin/auto_backup.sh

Uložit a zavřít.

The new cronjob for user root has been created. Check all cronjob list for the root user using the following command.

crontab -u root -l

And you will get details cron configuration for the user root.

As a result, you've successfully set up the automatic MySQL database backup using the bash script and Linux Cron.

Finally, you've learned how to install and secure the MySQL Database Server on the Debian Buster 10 with phpMyAdmin web-based database management. Also, you've learned the basic MySQL query for managing users, create database and tables, and using the mysqldump utility for backup databases.

Odkazy

  • https://dev.mysql.com/doc/refman/en/
  • https://docs.phpmyadmin.net/en/latest/index.html

Debian
  1. Jak nainstalovat ProFTPD na Debian 8

  2. Jak nainstalovat MySQL na Debian 11

  3. Jak nainstalovat MySQL Workbench na Debian 11

  1. Jak nainstalovat Redis Server na Debian 11

  2. Jak nainstalovat MySQL 8.0 / 5.7 na Debian 11 / Debian 10

  3. Jak nainstalovat MySQL Server na Debian 9

  1. Jak nainstalovat MySQL Server na Debian 10 Buster

  2. Jak nainstalovat MySQL Workbench na Debian 10

  3. Jak nainstalovat MySQL na Debian 11