- 1 Introduction
- 2 Creating Users in MariaDB
- 3 Managing Privileges in MariaDB
- 4 Mazání uživatelů v MariaDB
- 5 Běžné chyby a řešení (FAQ)
- 6 Závěr
Introduction
1.1 Chcete se naučit, jak vytvářet uživatele v MariaDB?
Už jste někdy chtěli vytvořit nového uživatele v MariaDB a nastavit mu odpovídající oprávnění?
Například jste mohli narazit na následující situace:
- Spustili jste
CREATE USER, ale nemůžete se přihlásit - Udělili jste oprávnění pomocí
GRANT, ale nebyla aplikována - Nejste si jisti, jak nastavit správná oprávnění v produkčním prostředí
- Chcete bezpečně odstranit nepotřebné uživatele
Pokud čelíte těmto problémům, tento článek vám pomůže plně pochopit celý proces od vytváření uživatelů po správu oprávnění a mazání uživatelů v MariaDB.
1.2 Co se v tomto článku naučíte
Tento článek poskytuje podrobný výklad následujících aspektů správy uživatelů v MariaDB:
- Jak vytvářet a mazat uživatele v MariaDB
- Jak udělovat a spravovat oprávnění (nejlepší postupy pro správné nastavení práv)
- Běžné chyby a jak je řešit
- Nejlepší provozní postupy pro vývojová i produkční prostředí
Všechny témata jsou vysvětleny s příklady SQL vhodnými pro začátečníky, takže se můžete učit a zároveň cvičit.
1.3 Cílová skupina
Tento článek je určen pro:
- Začátečníky: Lidi, kteří se poprvé učí správu uživatelů v MariaDB
- Inženýry: Lidi, kteří chtějí nastavit správná oprávnění ve vývojových prostředích
- Správce databází: Lidi, kteří usilují o zvýšení bezpečnosti v produkčních prostředích
I když jste v MariaDB nováčci, tento průvodce poskytuje praktické informace, které můžete sebejistě použít v reálných operacích.
Creating Users in MariaDB
2.1 Základní příkaz pro vytvoření uživatele
V MariaDB vytvoříte nového uživatele pomocí příkazu CREATE USER.
Uživatelské jméno a heslo můžete zadat následující syntaxí:
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
Například pro vytvoření uživatele yamada na localhost s heslem password123:
CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';
Po provedení tohoto příkazu bude uživatel yamada vytvořen a bude se moci přihlásit pouze z localhostu (přihlášení povoleno jen na samotném serveru).
2.2 Příklady vytvoření uživatelů podle použití
Při vytváření uživatelů v MariaDB můžete pomocí pole hostname určit, odkud jsou povoleny připojení.
Je důležité nastavení přizpůsobit vašemu konkrétnímu scénáři.
| Case | Command Example | Description |
|---|---|---|
| Local Environment (Development) | CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'password'; | User dedicated to development environment |
| Allow Remote Connections | CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password'; | Allow connections from any host (security caution required) |
| Allow Connection from Specific IP | CREATE USER 'admin'@'192.168.1.100' IDENTIFIED BY 'password'; | Restrict access to a specific IP address only |
| Allow Connection from Specific Subnet | CREATE USER 'network_user'@'192.168.1.%' IDENTIFIED BY 'password'; | Allow only machines with IP addresses in the 192.168.1.x range |
Použití '%' umožňuje připojení ze všech hostitelů, ale
to představuje značné bezpečnostní riziko a nedoporučuje se v produkčním prostředí.
V produkci je nejlepší specifikovat IP adresy nebo nastavit přístup přes VPN.
2.3 Důležité poznámky při vytváření uživatelů
Existuje několik důležitých úvah, které je třeba při vytváření uživatelů mít na paměti.
(1) Kontrola existujících uživatelů
Před vytvořením uživatele je nutné ověřit, že stejný uživatel již neexistuje.
Seznam aktuálně registrovaných uživatelů získáte následujícím příkazem:
SELECT user, host FROM mysql.user;
Příklad výstupu:
+---------+-----------+
| user | host |
+---------+-----------+
| root | localhost |
| yamada | localhost |
+---------+-----------+
Pokud už existuje uživatel se stejným username@hostname, provedení CREATE USER způsobí chybu.
(2) Co dělat, pokud uživatel již existuje
V MariaDB nemůžete přepsat existujícího uživatele jeho opětovným vytvořením.
Pokud stejný uživatel již existuje, použijte jeden z následujících přístupů:
- Změňte heslo existujícího uživatele
ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
- Odstraňte nepotřebného uživatele a vytvořte nového
DROP USER 'yamada'@'localhost'; CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';
Managing Privileges in MariaDB
3.1 Grant Privileges
Basic Syntax
V MariaDB můžete udělit oprávnění uživateli pomocí příkazu GRANT.
GRANT privilege ON database_name.table_name TO 'username'@'hostname';
Například pro udělení všech oprávnění na test_db uživateli yamada:
GRANT ALL PRIVILEGES ON test_db.* TO 'yamada'@'localhost';
Význam tohoto příkazu:
ALL PRIVILEGES: Uděluje všechna oprávněnítest_db.*: Platí pro všechny tabulky v databázitest_db'yamada'@'localhost': Platí pro uživateleyamadapřihlašujícího se z localhost
3.2 Běžně používaná oprávnění
V MariaDB můžete udělit oprávnění, jako následující:
| Privilege | Description |
|---|---|
ALL PRIVILEGES | Grant all privileges |
SELECT | Read data |
INSERT | Insert data |
UPDATE | Update data |
DELETE | Delete data |
CREATE | Create new tables or databases |
DROP | Drop databases or tables |
GRANT OPTION | Grant privileges to other users |
ALTER | Modify table structure |
EXECUTE | Execute stored procedures or functions |
RELOAD | Reload server settings |
Pokud chcete povolit pouze specifické operace, doporučuje se udělit oprávnění individuálně spíše než udělit všechno.
3.3 Nastavení oprávnění podle použití
Je důležité přiřadit správná oprávnění pro každou situaci.
| Situation | Recommended Privileges | Command Example |
|---|---|---|
| WordPress Operator | SELECT, INSERT, UPDATE, DELETE | GRANT SELECT, INSERT, UPDATE, DELETE ON wp_db.* TO 'wp_user'@'localhost'; |
| Developer (Development Environment) | ALL PRIVILEGES | GRANT ALL PRIVILEGES ON dev_db.* TO 'dev_user'@'%'; |
| Read-Only User | SELECT only | GRANT SELECT ON analytics_db.* TO 'readonly'@'localhost'; |
| Database Administrator (Production Environment) | ALL PRIVILEGES (restricted) | GRANT ALL PRIVILEGES ON production_db.* TO 'admin'@'localhost'; |
V produkčních prostředích se vyhněte udělování ALL PRIVILEGES příliš snadno.
3.4 Kontrola udělených oprávnění
Pro kontrolu udělených oprávnění použijte příkaz SHOW GRANTS.
SHOW GRANTS FOR 'username'@'hostname';
Například pro kontrolu oprávnění pro uživatele yamada:
SHOW GRANTS FOR 'yamada'@'localhost';
Příklad výstupu:
+-----------------------------------------------------------------------------------+
| Grants for yamada@localhost |
+-----------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON test_db.* TO 'yamada'@'localhost' |
+-----------------------------------------------------------------------------------+
Toto ukazuje oprávnění aktuálně udělená uživateli.
3.5 Odvolání oprávnění (Odstranění oprávnění)
Pro odvolání specifických oprávnění od uživatele použijte příkaz REVOKE.
Základní syntaxe
REVOKE privilege ON database_name.table_name FROM 'username'@'hostname';
Například pro odvolání oprávnění UPDATE od uživatele yamada:
REVOKE UPDATE ON test_db.* FROM 'yamada'@'localhost';
Odvolání všech oprávnění
REVOKE ALL PRIVILEGES ON *.* FROM 'yamada'@'localhost';
3.6 Co dělat, když změny oprávnění nezačnou platit
V MariaDB se změny oprávnění nemusí aplikovat okamžitě. Pokud se to stane, spusťte následující příkaz:
FLUSH PRIVILEGES;
Spuštění tohoto příkazu vynutí MariaDB k načtení tabulek oprávnění, takže vaše změny začnou platit okamžitě.

Mazání uživatelů v MariaDB
4.1 Smazání uživatele
Pro smazání uživatele MariaDB použijte příkaz DROP USER.
Základní syntaxe
DROP USER 'username'@'hostname';
Například pro smazání uživatele yamada z localhost:
DROP USER 'yamada'@'localhost';
Po provedení tohoto příkazu bude uživatel yamada úplně odstraněn z systému MariaDB.
4.2 Co zkontrolovat před smazáním uživatele
Před smazáním uživatele byste měli provést některé důležité kontroly.
Buďte opatrní, abyste omylem nesmazali nezbytné uživatele.
(1) Kontrola, zda cílový uživatel existuje
V MariaDB se pokus o smazání neexistujícího uživatele způsobí chybu.
Spusťte následující příkaz pro potvrzení, že cílový uživatel existuje:
SELECT user, host FROM mysql.user;
Příklad výstupu:
+---------+-----------+
| user | host |
+---------+-----------+
| root | localhost |
| yamada | localhost |
| admin | 192.168.1.100 |
+---------+-----------+
Pokud se v tomto seznamu objeví uživatel yamada, uživatel může být smazán.
(2) Kontrola, zda je uživatel aktuálně připojen
V MariaDB, pokud uživatel, kterého mažete, má aktuálně aktivní relaci,
smazání nemusí začít platit okamžitě pro tuto relaci.
Zkontrolujte, zda je uživatel aktivní pomocí následujícího příkazu:
SELECT user, host FROM information_schema.processlist;
Příklad výstupu:
+---------+-----------+
| user | host |
+---------+-----------+
| yamada | localhost |
| root | localhost |
+---------+-----------+
V tomto příkladu je uživatel yamada aktuálně aktivní, takže byste měli ukončit relaci před smazáním.
(3) Vynucené ukončení relace
Můžete vynutit ukončení specifické relace pomocí příkazu KILL.
- Nejprve zkontrolujte ID procesu (sloupec
ID):SELECT id, user, host FROM information_schema.processlist;
Příklad výstupu:
+----+---------+-----------+
| id | user | host |
+----+---------+-----------+
| 10 | yamada | localhost |
| 11 | root | localhost |
+----+---------+-----------+
- Pokud má
yamadaID procesu10, ukončete ho pomocí:KILL 10;
4.3 Vyčištění po smazání
Po smazání uživatele mohou v databázi zůstat reziduální informace o oprávněních.
V takových případech spusťte FLUSH PRIVILEGES k osvěžení tabulek oprávnění.
FLUSH PRIVILEGES;
Spustěním tohoto příkazu zajistíte, že informace smazaného uživatele jsou plně odstraněny z databázového systému.
4.4 Důležité poznámky při mazání uživatelů
Při mazání uživatelů si pamatujte následující body:
- Smazaní uživatelé nelze obnovit
- Jakmile spustíte
DROP USER, smazaný uživatel nelze obnovit. - Pokud byl smazán omylem, musíte uživatele znovu vytvořit pomocí
CREATE USER.
- Oprávnění mohou vyžadovat převod
- Pokud byl smazaný uživatel zodpovědný za kritické databázové operace, musíte předem převést potřebná oprávnění na jiného vhodného uživatele.
- Buďte opatrní v produkčních prostředích
- V produkčních prostředích může náhlé smazání způsobit výpadek systému nebo chyby.
- Silně se doporučuje předem analyzovat dopad a vytvořit zálohu.
Běžné chyby a řešení (FAQ)
Při správě uživatelů v MariaDB můžete narazit na různé chyby.
Tato sekce vysvětluje nejběžnější chyby, jejich příčiny a jak je řešit.
5.1 FAQ pro začátečníky
Otázka 1: Jaký je rozdíl mezi správou uživatelů v MariaDB a MySQL?
MariaDB a MySQL obecně používají stejnou syntaxi, ale existují některé rozdíly ve funkcích.
| Comparison Item | MySQL | MariaDB |
|---|---|---|
CREATE USER | Supported | Supported |
SHOW GRANTS FOR | Supported | Supported |
DROP USER | Supported | Supported |
CREATE ROLE | MySQL 8.0 and later | MariaDB 10.0 and later |
MariaDB podporuje CREATE ROLE, což umožňuje správu uživatelů na základě rolí.
Otázka 2: Jaký je rozdíl mezi localhost a %?
V správě uživatelů MariaDB je specifikace hostname klíčová.
localhost: Umožňuje připojení pouze z lokálního stroje%: Umožňuje připojení z jakéhokoli hostitele (bezpečnostní riziko)192.168.1.100: Umožňuje připojení pouze z specifické IP adresy192.168.1.%: Umožňuje připojení pouze z specifické podsítě (192.168.1.*)
5.2 Řešení problémů
Otázka 3: Jak opravit „ERROR 1396 (HY000): Operation CREATE USER failed“
Příčina: Specifikovaný uživatel již existuje, takže nového uživatele nelze vytvořit.
Řešení: Zkontrolujte, zda uživatel existuje, a pokud je to nutné, smažte ho nebo upravte.
- Zkontrolujte existující uživatele
SELECT user, host FROM mysql.user WHERE user='yamada';
- Smažte, pokud není nutný
DROP USER 'yamada'@'localhost';
- Místo toho změňte heslo
ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
Otázka 4: Oprávnění udělená pomocí GRANT nejsou aplikována
Příčina: Cache oprávnění MariaDB nebyl osvěžen.
Řešení: Spusťte FLUSH PRIVILEGES k načtení oprávnění.
FLUSH PRIVILEGES;
Otázka 5: Nelze se připojit na dálku, i když používáte %
Příčina: Vzdálená připojení mohou být omezena v konfiguračním souboru MariaDB.
Řešení:
- Upravte konfigurační soubor
/etc/mysql/my.cnf(nebo/etc/mysql/mariadb.conf.d/50-server.cnf) a změňte hodnotubind-addressna0.0.0.0.bind-address = 0.0.0.0
- Restartujte MariaDB
sudo systemctl restart mariadb
- Použijte
%v příkazuGRANTk povolení připojeníGRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%' IDENTIFIED BY 'password';
Q6: Získání chyby „Access denied for user ‚user’@’host’“
Příčina: Uživatel nemá odpovídající oprávnění, nebo je heslo nesprávné.
Řešení:
- Zkontrolujte aktuální oprávnění
SHOW GRANTS FOR 'user'@'host';
- Udělejte vhodná oprávnění
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'host';
- Ověřte, že se přihlašujete se správným heslem
mysql -u user -p
Závěr
Správa uživatelů MariaDB je nezbytná pro zlepšení bezpečnosti databáze a provozní efektivity.
V tomto článku jsme podrobně pokryli vytváření uživatelů, správu oprávnění, mazání uživatelů a běžné chyby s jejich řešeními.
6.1 Shrnutí
① Vytváření uživatelů v MariaDB
- Vytvářejte nové uživatele pomocí příkazu
CREATE USER - Omezujte přístup pomocí
@'hostname' - Vždy zkontrolujte existující uživatele před vytvořením nových
② Správa oprávnění v MariaDB
- Používejte
GRANTk přiřazení minimálních potřebných oprávnění - Používejte
SHOW GRANTSk ověření aktuálních oprávnění - Používejte
REVOKEk odebrání zbytečných oprávnění - Aplikujte změny pomocí
FLUSH PRIVILEGES
③ Mazání uživatelů v MariaDB
- Mazat uživatele pomocí příkazu
DROP USER - Zkontrolujte aktivní relace před smazáním
- Vyčistěte mezipaměť oprávnění pomocí
FLUSH PRIVILEGES
④ Běžné chyby a řešení
ERROR 1396 (HY000)→ Zkontrolujte existující uživatele a případně je odstraňte- Změny oprávnění nebyly aplikovány → Spusťte
FLUSH PRIVILEGES Access denied for user→ Ověřte oprávnění a heslo- Nelze se připojit vzdáleně pomocí
%→ Upravte konfiguracibind-address
6.2 Nejlepší postupy pro správu uživatelů MariaDB
- Udělujte pouze minimální potřebná oprávnění
- Vyhněte se neuváženému udělování
ALL PRIVILEGES - Omezujte produkční uživatele na
SELECT, INSERT, UPDATE, DELETE, kde je to možné - Vždy ověřujte změny oprávnění
- Používejte
SHOW GRANTSk potvrzení správnosti konfigurace - Analyzujte dopad před smazáním uživatelů
- Buďte opatrní v produkci a vytvářejte zálohy
- Uplatňujte silné bezpečnostní postupy
- Aplikujte IP omezení pro vzdálená připojení
- Nastavte silné heslo pro uživatele root
- Pravidelně odstraňujte zbytečné uživatele a oprávnění
6.3 Závěrečné myšlenky
V tomto průvodci jste se naučili vše od základů po pokročilé techniky správy uživatelů MariaDB.
Využijte tyto znalosti k dosažení bezpečné a efektivní správy databáze.
Budeme i nadále sdílet užitečné informace o MariaDB, takže zůstaňte naladěni! 🚀


