MySQL je open-source relační databáze, která je zdarma a široce používaná. Je to dobrá volba, pokud víte, že potřebujete databázi, ale nevíte mnoho o všech dostupných možnostech.
Tento článek popisuje základní instalaci databázového serveru MySQL na operační systém Ubuntu. Možná budete muset nainstalovat další balíčky, aby aplikace mohly používat MySQL, jako jsou rozšíření pro PHP. Podrobnosti naleznete v dokumentaci aplikace.
Instalovat MySQL
Nainstalujte server MySQL pomocí správce balíčků operačního systému Ubuntu:
sudo apt-get update
sudo apt-get install mysql-server
Instalační program nainstaluje MySQL a všechny závislosti.
Pokud se nástroj pro zabezpečenou instalaci nespustí automaticky po dokončení instalace, zadejte následující příkaz:
sudo mysql_secure_installation utility
Tento nástroj vás vyzve k definování hesla root mysql a dalších možností souvisejících se zabezpečením, včetně odebrání vzdáleného přístupu uživateli root a nastavení hesla root.
Povolit vzdálený přístup
Pokud máte povoleno iptables a chcete se připojit k databázi MySQL z jiného počítače, musíte otevřít port ve bráně firewall vašeho serveru (výchozí port je 3306). Nemusíte to dělat, pokud aplikace, která používá MySQL, běží na stejném serveru.
Spuštěním následujícího příkazu povolte vzdálený přístup k serveru mysql:
sudo ufw enable
sudo ufw allow mysql
Spusťte službu MySQL
Po dokončení instalace můžete spustit databázovou službu spuštěním následujícího příkazu. Pokud je služba již spuštěna, zobrazí se zpráva s informací, že služba již běží:
sudo systemctl start mysql
Spustit při restartu
Chcete-li zajistit, aby se databázový server po restartu spustil, spusťte následující příkaz:
sudo systemctl enable mysql
Konfigurovat rozhraní
MySQL ve výchozím nastavení již není vázáno (naslouchá na ) žádným vzdáleně přístupným rozhraním. Upravte direktivu „bind-address“ v /etc/mysql/mysql.conf.d/mysqld.cnf:
bind-address = 127.0.0.1 ( The default. )
bind-address = XXX.XXX.XXX.XXX ( The ip address of your Public Net interface. )
bind-address = ZZZ.ZZZ.ZZZ.ZZZ ( The ip address of your Service Net interface. )
bind-address = 0.0.0.0 ( All ip addresses. )
Restartujte službu mysql.
sudo systemctl restart mysql
Spustit prostředí mysql
Existuje více než jeden způsob práce se serverem MySQL, ale tento článek se zaměřuje na nejzákladnější a nejkompatibilnější přístup, mysql
shell.
-
Na příkazovém řádku spusťte následující příkaz a spusťte
mysql
shell a zadejte jej jako uživatel root:/usr/bin/mysql -u root -p
-
Až budete vyzváni k zadání hesla, zadejte heslo, které jste nastavili v době instalace, nebo pokud jste žádné nenastavili, stiskněte Enter odeslat žádné heslo.
Následující
mysql
měla by se objevit výzva shellu:mysql>
Nastavte heslo uživatele root
Pokud jste se přihlásili zadáním prázdného hesla nebo pokud chcete změnit nastavené heslo root, můžete heslo vytvořit nebo změnit.
-
Pro verze starší než MySQL 5.7 zadejte do
mysql
následující příkaz shell, nahraďtepassword
s vaším novým heslem:UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';
Pro verzi MySQL 5.7 a novější zadejte do
mysql
následující příkaz shell, nahrazujícípassword
s vaším novým heslem:UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root';
-
Aby se změna projevila, znovu načtěte uložené informace o uživateli pomocí následujícího příkazu:
FLUSH PRIVILEGES;
Poznámka :Pro příkazy SQL používáme velká písmena. Pokud tyto příkazy zadáte malými písmeny, budou fungovat. Podle konvence jsou příkazy psány velkými písmeny, aby se odlišily od názvů polí a dalších dat, se kterými se manipuluje.
Pokud budete později potřebovat resetovat heslo root, přečtěte si téma Resetování hesla root MySQL.
Zobrazit uživatele
MySQL ukládá informace o uživateli ve své vlastní databázi. Název databáze je mysql . Uvnitř této databáze jsou informace o uživateli v tabulce adataset s názvem user . Pokud chcete vidět, jací uživatelé jsou nastaveni v tabulce MySQLuser, spusťte následující příkaz:
SELECT User, Host, authentication_string FROM mysql.user;
Následující seznam popisuje části tohoto příkazu:
- VYBRAT říká MySQL, že žádáte o data.
- Uživatel , Hostitel , autentizační_řetězec říká MySQL, do jakých polí má nahlížet. Pole jsou kategorie pro data v tabulce. V tomto případě hledáte uživatelské jméno, hostitele spojeného s uživatelským jménem a zašifrované heslo.
- Z mysql.user “ říká MySQL, aby získala data z mysql databázi a uživatele stůl.
- Středník (;) ukončuje příkaz.
Poznámka :Všechny SQL dotazy končí středníkem. MySQL nezpracuje dotaz, dokud nezadáte středník.
Uživatelští hostitelé
Následující příklad je výstupem pro předchozí dotaz:
SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User | Host | authentication_string |
+------------------+-----------+-------------------------------------------+
| root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |
+------------------+-----------+-------------------------------------------+
Uživatelé jsou přidruženi k hostiteli, konkrétně k hostiteli, ze kterého se připojují. Uživatel root je v tomto příkladu definován jako localhost , pro IP adresu místního hostitele a název hostitele serveru. Obvykle potřebujete nastavit uživatele pouze pro jednoho hostitele, toho, ze kterého se obvykle připojujete.
Pokud aplikaci spouštíte na stejném počítači jako MySQLserver, hostitel, ke kterému se připojuje, je ve výchozím nastavení localhost . Všichni noví uživatelé, které vytvoříte, musí mít localhost v jejich hostiteli pole.
Pokud se vaše aplikace připojuje vzdáleně, hostitel záznam, který MySQL hledá, je IP adresa nebo název hostitele DNS vzdáleného počítače (toho, ze kterého klient přichází).
Anonymní uživatelé
V ukázkovém výstupu má jeden záznam hodnotu hostitele, ale žádné uživatelské jméno ani heslo. Jedná se o anonymního uživatele . Když se klient připojí bez zadaného uživatelského jména, pokouší se připojit jako anonymní uživatel.
Obvykle nechcete žádné anonymní uživatele, ale některé instalace MySQL jednoho ve výchozím nastavení obsahují. Pokud nějaký uvidíte, měli byste uživatele buď smazat (uživatelské jméno označte prázdnými uvozovkami, např. „ “), nebo pro něj nastavit heslo.
Vytvořte databázi
Mezi databázovým serverem je rozdíl a databázi , dokonce i myšlenkové termíny se často používají zaměnitelně. MySQL je databázový server, což znamená, že sleduje databáze a řídí přístup k nim. Databáze uchovává data a je to databáze, ke které se aplikace pokoušejí přistupovat při interakci s MySQL.
Některé aplikace vytvářejí databázi jako součást procesu nastavení, ale jiné vyžadují, abyste si databázi vytvořili sami a řekli o ní aplikaci.
Chcete-li vytvořit databázi, přihlaste se do mysql
shell a spusťte následující příkaz, kterým nahradíte demodb
s názvem databáze, kterou chcete vytvořit:
CREATE DATABASE demodb;
Po vytvoření databáze můžete ověřit její vytvoření spuštěním dotazu se seznamem všech databází. Následující příklad ukazuje dotaz a příklad výstupu:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demodb |
| mysql |
+--------------------+
3 rows in set (0.00 sec)
Přidat uživatele databáze
Když se aplikace připojují k databázi pomocí uživatele root, mají obvykle více oprávnění, než potřebují. Můžete přidat uživatele, které mohou aplikace používat k připojení k nové databázi. V následujícím příkladu uživatel s názvem demouser je vytvořen.
-
Chcete-li vytvořit nového uživatele, spusťte následující příkaz v
mysql
shell:INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
-
Když provedete změny u uživatele tabulky v mysql databáze, řekněte MySQL, aby přečetlo změny vyprázdněním oprávnění, a to následovně:
FLUSH PRIVILEGES;
-
Ověřte, že byl uživatel vytvořen opětovným spuštěním dotazu SELECT:
SELECT User, Host, authentication_string FROM mysql.user; +------------------+-----------+-------------------------------------------+ | User | Host | Password | +------------------+-----------+-------------------------------------------+ | root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 | | demouser | localhost | *0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6 | +------------------+-----------+-------------------------------------------+
Udělit uživatelská oprávnění databáze
Ihned po vytvoření nového uživatele nemá žádná oprávnění. Uživatel se může přihlásit, ale nelze jej použít k provádění jakýchkoli změn v databázi.
-
Udělte uživateli plná oprávnění pro vaši novou databázi spuštěním následujícího příkazu:
GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
-
Vyprázdněte oprávnění, aby byla změna oficiální, spuštěním následujícího příkazu:
FLUSH PRIVILEGES;
-
Chcete-li ověřit, zda jsou tato oprávnění nastavena, spusťte následující příkaz:
SHOW GRANTS FOR 'demouser'@'localhost'; 2 rows in set (0.00 sec)
MySQL vrací příkazy potřebné k reprodukci oprávnění daného uživatele, pokud byste server přestavěli.
USAGE on \*.\*
znamená, že uživatelé ve výchozím nastavení nemají žádná oprávnění. Tento příkaz je přepsán druhým příkazem, což je povolení, které jste spustili pro novou databázi.+-----------------------------------------------------------------------------------------------------------------+ | Grants for demouser@localhost | +-----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'demouser'@'localhost' IDENTIFIED BY PASSWORD '*0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6' | | GRANT ALL PRIVILEGES ON `demodb`.* TO 'demouser'@'localhost' | +-----------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
Přehled
Pokud právě vytváříte databázi a uživatele, máte hotovo. Zde uvedené pojmy by vám měly poskytnout solidní začátek, ze kterého se dozvíte více.
Související články
- Nakonfigurujte server MySQL v operačním systému Ubuntu
- Resetujte kořenové heslo MySQL