Č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.
Související články
- Nainstalujte server MySQL® na operační systém Ubuntu
- Resetujte kořenové heslo MySQL®