GNU/Linux >> Znalost Linux >  >> Linux

Nakonfigurujte server MySQL na operačním systému Ubuntu

Článek se zabýval základním nastavením serveru MySQL® v operačním systému Ubuntu®. Popisuje, jak nastavit heslo uživatele root, vytvořit databázi a přidat uživatele do databáze. Tento článek zkoumá konfiguraci MySQL trochu podrobněji, abyste mohli upravit její konfiguraci a byli připraveni pro případ, že by se něco pokazilo.

Najděte konfigurační soubory

Ve výchozím nastavení naleznete konfigurační soubory MySQL® v:

/etc/mysql

Pokud tam však nejsou, můžete použít mysqld najít konfiguraci. Spusťte následující příkaz:

$ /usr/sbin/mysqld --help --verbose

První část dlouhé odpovědi popisuje možnosti, které můžete odeslat na server při jeho spuštění. Druhá část zobrazuje konfiguraci nastavenou během kompilace serveru.

Poblíž začátku výstupu najděte několik řádků, které vypadají podobně jako v následujícím příkladu:

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

Server prozkoumá tento seznam, dokud nenajde konfigurační soubor.

konfigurační soubor my.cnf

Otevřete a zkontrolujte /etc/mysql/my.cnf soubor.

Řádky komentářů začínající # , zdokumentujte použití různých nastavení. Zobrazují podrobnosti o umístění souborů protokolu, databázových souborů a dalších podrobností.

Skupiny konfigurace

Konfigurační soubor obsahuje řádky s jedním slovem v hranatých závorkách, například [klient] nebo [mysqld] .Tyto sekce jsou konfigurační skupiny. Díky nim jsou důležité konfigurační prvky viditelnější pro programy, které čtou konfigurační soubor.

Sekce konfigurace serveru je technicky soubor nástrojů. To zahrnuje server (mysqld ), theclient (mysql ), a další nástroje. Tyto programy vypadají v my.cnf aby viděli, jak by se měli chovat.

Sekce konfigurace klienta řídí mysql klient a mysqld sekce řídí konfiguraci serveru.

Soubory protokolu

Soubory protokolu jsou nejlepším místem pro zahájení odstraňování problémů s jakýmkoli programem. Ve výchozím nastavení MySQL ukládá své protokolové soubory do následujícího adresáře:

/var/log/mysql

Možná budete muset použít sudo získat seznam souborů v tomto adresáři.

Pokud ve výchozím adresáři nenajdete protokoly MySQL®, zkontrolujte konfiguraci MySQL. Zobrazit my.cnf a vyhledejte log_error řádek, jako v:

log_error = /var/log/mysql/error.log

Pokud takový řádek nevidíte, vytvořte jej v mysqld takže MySQL® může používat svůj vlastní chybový protokol. Použijte umístění v příkladu a vytvořte /var/log/mysql adresář, pokud ještě neexistuje. Poté restartujte MySQL, abyste provedli změnu.

Ujistěte se, že uživatel může zapisovat do zvoleného adresáře protokolu ovládáním mysql proces. Uživatel spouštějící proces je definován v uživatelské konfiguraci hodnotu pro mysqld v my.cnf .

Nastavení sítě

Pod klientem může být nastavení „port“. a server konfigurační sekce. Port pod serverem sekce řídí, na jakém portu server naslouchá. Výchozí port je 3306 ale můžete to změnit.

Port v klientu sekce říká klientovi, ke kterému portu se má ve výchozím nastavení připojit. Obecně chcete, aby se obě nastavení portů shodovala.

Pokud používáte výchozí nastavení, neuvidíte položky portů v konfiguračním souboru. Pokud chcete změnit port, přidejte do příslušných kategorií následující řádky:

[client]
port = 3306

[mysqld]
port = 3306

Dalším síťovým nastavením, které je třeba hledat, je bind-address hodnota. To se obvykle nastaví na adresu pro localhost,127.0.0.1 . Navázáním na localhost server zajišťuje, že se k němu nikdo nemůže připojit zvenčí místního počítače.

Pokud provozujete server MySQL na jiném počítači než vaše aplikace, měli byste se vázat na vzdáleně přístupnou adresu místo na localhost. Změňte nastavení adresy vazby tak, aby odpovídalo vaší veřejné IP adrese. Z bezpečnostních důvodů byste měli v síti používat backendovou IP adresu.

Pokud nevidíte bind-address měli byste jeden vložit do mysqld kategorie, která vám pomůže řídit přístup k serveru:

[mysqld]
$ bind-address = 127.0.0.1

Nezapomeňte vzít v úvahu název hostitele klienta při nastavování uživatelů databáze a poskytnout přístup k bráně firewall, pokud spouštíte iptables .

mysqld a mysqld_safe

Za scénou existují dvě verze serveru MySQL, mysqld a mysqld_safe . Oba čtou stejné sekce konfigurace. Nicméně mysqld_safe spouští se s více povolenými bezpečnostními funkcemi, které usnadňují zotavení z řešení problémů.

Oba mysqld a mysqld_safe číst konfigurační položky v mysqld sekce. Pokud zahrnete mysqld_safe sekce, pak pouze mysqld_safe používá tyto hodnoty.

Ve výchozím nastavení služba MySQL spouští mysqld_safe , což je vhodné.

mysqladmin

mysqladmin umožňuje provádět některé administrativní funkce z příkazového řádku, které tento článek neřeší. Později můžete nástroj prozkoumat hlouběji, abyste zjistili, co dokáže, zejména pokud potřebujete vytvořit skripty, které provádějí funkce, jako je kontrola stavu serveru nebo vytváření a odstraňování databází.

Zálohy

Kromě obvyklého zálohování celého počítače máte k dispozici následující možnosti zálohování databází Hlavní dvě možnosti jsou zkopírovat databázové soubory nebo použít mysqldump .

Kopírování souboru

Ve výchozím nastavení MySQL vytváří adresář pro každou databázi ve svém datovém adresáři /var/lib/mysql .

Po nalezení datového adresáře chvíli počkejte, než z něj vytvoříte kopii. Když je databázový server aktivní, zapisuje nové hodnoty do tabulek. Nepřerušujte tyto procesy, abyste předešli možnému poškození zálohy.

Abyste zajistili, že databázové soubory zkopírujete čistě, měli byste před kopírováním úplně vypnout server MySQL.

Databázi můžete uzamknout jako pouze pro čtení po dobu trvání kopie. Až skončíte, uvolněte zámek. Vaše aplikace tak mohou při zálohování souborů stále číst data.

Zamkněte databáze na pouze pro čtení spuštěním následujícího příkazu z příkazového řádku:

$ mysql -u root -p -e "FLUSH TABLES WITH READ LOCK;"

Až budete hotovi, spusťte následující příkaz a odemkněte databázi:

$  mysql -u root -p -e "UNLOCK TABLES;"

Možnost klienta MySQL, -e , říká klientovi, aby spustil dotaz v uvozovkách, jako bychom jej zadali do prostředí MySQL®.

Pokud tyto příkazy píšete ve skriptu, můžete heslo vložit do uvozovek hned za -p bez mezery mezi dvěma, podobně jako v následujících příkladech:

$ mysql -u root -p"password" -e "FLUSH TABLES WITH READ LOCK;"
$ mysql -u root -p"password" -e "UNLOCK TABLES;"

Ujistěte se, že jste nastavili oprávnění k tomuto souboru, abyste omezili přístup pro čtení z důvodů zabezpečení heslem.

mysqldump

Dalším přístupem k zálohování databáze je použití mysqldump nástroj. Místo přímého kopírování databázových souborů mysqldump vygeneruje textový soubor, který představuje databázi. Ve výchozím nastavení obsahuje textový soubor seznam příkazů SQL pro opětovné vytvoření databáze, ale můžete také exportovat databázi v jiném formátu, například .CSV nebo .XML . Můžete si přečíst manuálovou stránku pro mysqldump zobrazíte všechny jeho možnosti.

Příkazy generované mysqldump přejít přímo na standardní výstup. Můžete zadat a pro přesměrování výstupu spuštěním následujícího příkazu v příkazovém řádku:

$ mysqldump -u root -p demodb > dbbackup.sql

Tento příkaz říká mysqldump znovu vytvořit demodb databáze v příkazech SQL a zapsat je do souborudbbackup.sql . Pamatujte, že možnosti uživatelského jména a hesla fungují stejně jako u klienta MySQL, takže heslo můžete vložit přímo za -p ve skriptu.

Obnovit z mysqldump

Obnovení mysqldump databáze je podobná tomu, jak jste vytvořili výpis, ale používáte mysql místo mysqldump , jak je znázorněno v následujícím příkazu pro obnovení:

$ mysql -u root -p demodb < dbbackup.sql

Všimněte si také, že < úhelník mění směr. Tím se příkaz přepne z přesměrování jeho výstupu na extrahování vstupu z existujícího souboru. Tento vstup je odeslán do mysql způsobí, že instrukce znovu vytvoří databázi.

Ve výchozím nastavení se generované příkazy SQL přidávají do existujících databázových tabulek a nepřepisují je. Pokud obnovujete zálohu přes existující databázi, měli byste nejprve zrušit databázové tabulky nebo zrušit a znovu vytvořit samotnou databázi. Toto chování můžete změnit pomocí $ --add-drop-table pomocí příkazu, který vytvoří mysqldump . To způsobí mysqldump k přidání příkazu do zapsaných záložních souborů, který tabulky před jejich opětovným vytvořením zruší.

Databázový modul

databázový stroj je proces, který funguje v zákulisí, zápis a čtení dat ze souborů. Musíte o tom vědět pouze v případě, že chcete spouštět aplikaci, která byla optimalizována pro konkrétní databázový stroj.

Aplikace, které potřebují tabulky, je vytvoří na vyžádání a automaticky vytvoří typ stroje. Chcete-li zjistit, jaký stroj používají tabulky vaší databáze, můžete v prostředí MySQL spustit následující příkaz, kterým změníte demodb na název vaší databáze.:

$ SHOW TABLE STATUS FROM demodb;

Vyberte motor

V ideálním případě nebudete muset vybírat motor. Pokud nejste příliš obeznámeni s MySQL, povolte aplikaci, aby si ji ve výchozím nastavení vybrala. Pokud píšete aplikaci, používejte výchozí modul, dokud se nebudete lépe orientovat ve svých možnostech.

Postupujte podle pokynů správce databáze (DBA), pokud jej máte.

Dva databázové stroje používané nejčastěji s MySQL jsou MyISAM a InnoDB . Výchozí databázový stroj pro MySQL verze 5.1 a starší je MyISAM , zatímco InnoDB je výchozí databázový stroj počínaje MySQL verze 5.5.

MyISAM

Protože MyISAM je již nějakou dobu výchozí v MySQL, je to nejkompatibilnější volba ze dvou hlavních motorů. Některé typy vyhledávání fungují lépe na MyISAM než InnoDB . I když je to starší z těchto dvou, může být nejlepší volbou pro daný typ aplikace.

InnoDB

POZNÁMKA: DBA vám může pomoci dosáhnout toho nejlepšího InnoDB výkon, protože InnoDB vyžaduje mnoho úprav vašeho prostředí a přístupových vzorců. Výchozí konfigurace je optimální pro každodenní použití při vývoji softwaru.

InnoDB je odolnější vůči chybám než MyISAM a řeší pády a obnovu s mnohem menším rizikem poškození databáze.

Pokud vaše aplikace vyžaduje InnoDB a používáte MySQL 5.1 nebo starší, nemusí být v souboru my.cnf již žádná nastavení konfigurační soubor. To může být problém, pokud běžíte na serveru, který nemá moc paměti.

Následující nastavení vám mohou pomoci začít s InnoDB na sdíleném serveru s 256 meg RAM:

innodb_buffer_pool_size = 32M
innodb_log_file_size = 8M
innodb_thread_concurrency = 8
innodb_file_per_table

Přidejte je do [mysqld] části konfiguračního souboru. Opět jsou to pouze hrubá vodítka. Mohou vám pomoci začít, ale nejsou optimalizovány. Poraďte se se svým DBA nebo experimentujte s postupnými změnami v průběhu času, abyste zlepšili výkon.

  • Nainstalujte server MySQL® na operační systém Ubuntu
  • Resetujte kořenové heslo MySQL®

Linux
  1. Nakonfigurujte Apache v operačním systému Ubuntu

  2. Udělte přístup sudo v Debianu a operačním systému Ubuntu

  3. Naplánujte restartování v operačním systému Ubuntu

  1. Jak nakonfigurovat webový server Apache

  2. Změňte port SSH v operačním systému Linux Ubuntu

  3. Server Ubuntu:Rozdíl od Ubuntu

  1. Nainstalujte IMAP pro PHP 7.1 na operační systém Ubuntu

  2. Nainstalujte MySQL Server na operační systém Ubuntu

  3. Nastavte virtuální hostitele Apache v operačním systému Ubuntu