Během tradiční ceremonie k oslavě Dne vzniku samostatného československého státu (28. října) byl vyznamenán medailí Za zásluhy (o stát v oblasti hospodářské) vývojář 3D tiskáren Josef Průša. Letos byly uděleny pouze dvě medaile Za zásluhy o stát v oblasti hospodářské, druhou dostal informatik a manažer Ondřej Felix, který se zabývá digitalizací státní správy.
Tor Browser, tj. fork webového prohlížeče Mozilla Firefox s integrovaným klientem sítě Tor přednastavený tak, aby přes tuto síť bezpečně komunikoval, byl vydán ve verzi 15.0. Postaven je na Firefoxu ESR 140.
Bylo oznámeno (cs) vydání Fedora Linuxu 43. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách Fedora Magazinu: Fedora Workstation, Fedora KDE Plasma Desktop, Fedora Silverblue a Fedora Atomic Desktops.
Elon Musk oznámil (𝕏) spuštění internetové encyklopedie Grokipedia (Wikipedia). Zatím ve verzi 0.1. Verze 1.0 prý bude 10x lepší, ale i ve verzi 0.1 je podle Elona Muska již lepší než Wikipedia.
PSF (Python Software Foundation) po mnoha měsících práce získala grant ve výši 1,5 milionu dolarů od americké vládní NSF (National Science Foundation) v rámci programu "Bezpečnost, ochrana a soukromí open source ekosystémů" na zvýšení bezpečnosti Pythonu a PyPI. PSF ale nesouhlasí s předloženou podmínkou grantu, že během trvání finanční podpory nebude žádným způsobem podporovat diverzitu, rovnost a inkluzi (DEI). PSF má diverzitu přímo ve svém poslání (Mission) a proto grant odmítla.
Balík nástrojů Rust Coreutils / uutils coreutils, tj. nástrojů z GNU Coreutils napsaných v programovacím jazyce Rust, byl vydán ve verzi 0.3.0. Z 634 testů kompatibility Rust Coreutils s GNU Coreutils bylo úspěšných 532, tj. 83,91 %. V Ubuntu 25.10 se již používá Rust Coreutils místo GNU Coreutils, což může přinášet problémy, viz například nefunkční automatická aktualizace.
Od 3. listopadu 2025 budou muset nová rozšíření Firefoxu specifikovat, zda shromažďují nebo sdílejí osobní údaje. Po všech rozšířeních to bude vyžadováno někdy v první polovině roku 2026. Tyto informace se zobrazí uživateli, když začne instalovat rozšíření, spolu s veškerými oprávněními, která rozšíření požaduje.
Jste nuceni pracovat s Linuxem? Chybí vám pohodlí, které vám poskytoval Microsoft, když vás špehoval a sledoval všechno, co děláte? Nebojte se. Recall for Linux vám vrátí všechny skvělé funkce Windows Recall, které vám chyběly.
Společnost Fre(i)e Software oznámila, že má budget na práci na Debianu pro tablety s cílem jeho vyžívání pro vzdělávací účely. Jako uživatelské prostředí bude použito Lomiri.
Proběhla hackerská soutěž Pwn2Own Ireland 2025. Celkově bylo vyplaceno 1 024 750 dolarů za 73 unikátních zranitelností nultého dne (0-day). Vítězný Summoning Team si odnesl 187 500 dolarů. Shrnutí po jednotlivých dnech na blogu Zero Day Initiative (1. den, 2. den a 3. den) a na YouTube.
Nyní už umíte vytvořit dobře strukturovanou databázi. Vytvořením databáze by ale vaše starost o databázi končit neměla. Databázi musíte především zabezpečit před zlomyslnými hackery. Dále byste neměli podcenit zálohování databáze, možná budete muset také importovat data do databáze nebo naopak exportovat data z databáze. Databázi je také třeba chránit proti fragmentaci. Někdy možná budete muset opravit poškozené tabulky databáze. Jak vidíte, jste zatím jen na půlce cesty ke zvládnutí práce s databázovým systémem MySQL.
V tomto díle se naučíte zabezpečit databázi. Zabezpečení databáze je velmi důležité, protože v databázi se často uchovávají důležité informace a mohlo by proto být dost nepříjemné, kdyby je nějaký hacker prohlížel, nebo rovnou vymazal.
mysqlMožná jste si všimli, že se po instalaci MySQL automaticky vytvořily dvě
databáze - test a mysql. V databázi
mysql jsou uloženy tabulky uživatelských účtů. Je to databáze
jako každá jiná. Na tabulky v databázi mysql můžete odesílat stejné dotazy
jako na jiné tabulky. Tabulky v této databázi obsahují veškerá oprávnění
přidělená jednotlivým uživatelům.
Většina sloupců těchto tabulek může obsahovat pouze hodnoty:
Y(=yes) nebo N(=no). Hodnoty ukládané do sloupců
Host a Column_name jsou case insensitive, zatímco
hodnoty ukládané do sloupců User, Password,
Db a Table_name jsou case sensitive.
Databáze mysql obsahuje následující tabulky:
userdbhostfunccolumns_privtables_privuserTabulka user obsahuje veškerá oprávnění uživatelů.
Oprávnění nastavená v této tabulce jsou globální. Tj. když má uživatel
privilegium odstraňovat záznamy nastavená v tabulce user, může
odstraňovat záznamy v kterémkoliv sloupci kterékoli tabulky v kterékoli
databázi.
| Sloupec | Význam |
Host |
Tento sloupec obsahuje název hostitelského počítače, ze kterého se může k databázi daný uživatel přihlásit. Můžete sem ukládat adresy IP, názvy domén nebo
|
User | Uživatelské jméno daného uživatele. |
Password | Heslo uživatele. |
Select_priv |
Dovoluje uživateli spouštět výběrové dotazy SQL. |
Insert_priv |
Umožňuje uživateli přidávat data do databáze pomocí přidávacích dotazů SQL. |
Update_priv |
Umožňuje uživateli aktualizovat existující data pomocí aktualizačních dotazů SQL. |
Delete_priv |
Dovoluje uživateli data z databáze odstraňovat. |
Create_priv |
Umožňuje uživateli vytvářet nové databáze a tabulky (ale ne indexy -
viz Index_priv). |
Drop_priv |
Umožňuje uživateli odstraňovat databáze a tabulky. Toto může být velmi riskantní. |
Reload_priv |
Umožňuje uživateli aktualizovat tabulky uživatelských účtů pomocí příkazu FLUSH PRIVILEGES. |
Shutdown_priv |
Umožňuje uživateli vypnout databázový server MySQL |
Process_priv |
Umožňuje uživateli sledovat zpracování požadavků na serveru MySQL
příkazem mysqladmin processlist nebo SHOW
PROCESSLIST. Umožňuje i odstraňování procesů. |
File_priv |
Umožňuje číst soubory na serveru MySQL nebo do nich zapisovat. Pokud
bude služba MySQL spuštěna systémovým uživatelem root (tj. uživatelem
root daného serveru), může uživatel s právy
File_priv smazat i třeba systémové soubory na serverovém
počítači. |
Grant_priv |
Uživatelé s tímto privilegiem mohou udělovat privilegia jiným uživatelům. |
References_priv | V současné době se nepoužívá. |
Index_priv |
Umožňuje uživateli vytvářet/odstraňovat indexy. |
Alter_priv |
Dovoluje uživateli měnit strukturu tabulky. (ale ne pracovat s indexy) |
dbTabulka db obsahuje informace o udělených privilegiích
pro jednotlivé databáze. Privilegia udělená v této tabulce jsou
platná pouze pro určenou databázi. Nemá-li tedy uživatel privilegium
Drop_priv v tabulce user, ale má ho v tabulce
db, může odstraňovat pouze příslušnou databázi a její
tabulky.
Tabulka db obsahuje téměř stejné sloupce jako tabulka
user. Neobsahuje ale žádná privilegia pro správu (obsahuje jen
privilegia udělitelná v rámci práce s databází). Navíc obsahuje sloupec
Db, který obsahuje název databáze, pro kterou budou nastavení
platná.
hostV tabulce host můžete omezit privilegia hostitelů v rámci
databáze uvedené v sloupci db. Můžete zde tedy nastavit, že
pokud se někdo přihlásí k MySQL z počítače, na kterém běží databáze
(localhost), bude mít privilegium Drop_priv v rámci dané
databáze a pokud odněkud jinud, nebude dané privilegium mít.
Tabulka host obsahuje stejné sloupce jako tabulka
db, ale neobsahuje sloupec user.
columns_priv a tables_privTabulky columns_priv a tables_priv řídí
přístup k tabulkám a jednotlivým sloupcům tabulek. Je to úplně nejspodnější
stupeň udělování privilegií. Pokud uživateli přidělíte privilegium
SELECT v tabulce columns_priv, bude smět pouze
spouštět výběrové dotazy pouze na daný sloupec.
V následující tabulce jsou společné sloupce pro tabulky
columns_priv a tables_priv.
| Sloupec | Význam |
Host |
Název hostitele, ze kterého se uživatel k systému připojuje. |
Db |
Databáze, která obsahuje tabulky, na něž se příslušná privilegia vztahují. |
User |
Uživatelské jméno osoby, které privilegia udělujete. |
Table_name |
Název tabulky, pro kterou udělujete privilegia. Rozlišují se velká a malá písmena. |
Timestamp | Datum poslední změny. |
Column_priv |
Nastavení privilegií pro vybranou tabulku. Je to typ množiny
(SET). Může obsahovat pouze hodnoty: SELECT, INSERT,
UPDATE a REFERENCES. Hodnoty musí být odděleny čárkami. |
Tabulka tables_priv obsahuje navíc sloupce:
Grantor - uchovává jméno osoby, která právo udělila.Table_priv - jsou tu uložena privilegia pro danou tabulku.
Sloupec může obsahovat následující hodnoty: (SELECT, INSERT, UPDATE,
DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER).Tabulka columns_priv obsahuje navíc sloupec:
Column_name - obsahuje název sloupce, na který se vztahují
privilegia udělená v poli Column_priv.user atd. Například
pokud uživatel bude potřebovat prohlížet všechny tabulky i sloupce nějaké
databáze, ale aktualizovat jenom jeden sloupec, nastavte mu v tabulce db
privilegium Select_priv příslušné databáze a v tabulce
columns_priv privilegium UPDATE ve sloupci
Column_priv příslušného sloupce.user v databázi mysql. Takový
uživatel může snadno zjistit hesla ostatních uživatelů.root (a nejlépe ani žádné jiné
uživatele) bez hesla.%.mysqld jako systémový uživatel
počítače, na kterém bude mysqld spuštěno. Pak by totiž všichni
uživatelé s privilegiem FILE mohli mazat všechny (tedy i
systémové) soubory počítače, na kterém je mysqld spuštěno.MD5()).data by měly být vlastněny uživatelem,
který spouští službu mysqld. Tento uživatel by měl mít výhradní právo zde
uložené soubory číst nebo upravovat.Když se uživatel přihlásí k databázi MySQL, systém ověří, zda má
uživatel záznam v tabulce user. Dále ověří název hostitele,
uživatelské jméno a heslo. Když přihlášený uživatel odešle do databáze
dotaz, zjistí MySQL, jaké má uživatel privilegia v tabulce
user. Pokud tam uživatel nemá potřebná privilegia, prohledá
tabulku db. Tam nejprve ověří, zda se shoduje název hostitele,
uživatelské jméno a databáze. Pokud ano, ověří zde nastavená oprávnění.
Pokud je nenajde, začne prohledávat tabulku tables_priv a dále
columns_priv. Pokud ani tam oprávnění nenajde, generuje
chybu.
Celý proces je velmi rychlý, takže se nemusíte obávat, že když nastavíte
uživateli práva až v tabulce columns_priv, tak se bude dotaz
provádět postřehnutelně delší dobu.
Toto je dvoustupňové zabezpečení. Musí dojít k autentifikaci uživatele a dále musí mít daný uživatel potřebná privilegia.
Tabulky uživatelských účtů jsou běžné tabulky, takže pokud máte potřebná privilegia, můžete tabulky ručně upravovat. Takto můžete nastavit opravdu cokoli. Nevýhoda je, že přímá úprava uživatelských účtů je pomalá a uživatelsky nepřívětivá. Při přidávání nových záznamů se podívejte, jaké sloupce jsou povinné.
Příklad přidání nového uživatele Martin s heslem
termistor:
INSERT INTO user (Host, User, password)
VALUES("localhost", "Martin", PASSWORD("termistor"));
Toto vytvoří uživatele Martin s heslem
termistor, který se do databáze může připojit pouze z
počítače, na němž je spuštěna databáze MySQL.
GRANT
Příkaz GRANT slouží k snadnému vytváření
uživatelů a následnému přidávání privilegií.
Syntaxe příkazu GRANT je následující:
GRANT {privilegia} [(seznam sloupců)] [, {privilegia} [(seznam sloupců)]...]
ON názevdatabáze.názevtabulky
TO uživatelskéjméno@názevhostitele
IDENTIFIED BY "heslo"
[WITH GRANT OPTIONS]
kde za slovo privilegia doplníte privilegium, které chcete udělit.
| Privilegium | Význam |
ALL |
Uděluje uživateli všechna dostupná privilegia. |
ALTER |
Umožňuje aktualizovat a upravovat tabulky, sloupce a indexy. |
CREATE |
Umožňuje vytvářet tabulky nebo databáze. |
DELETE |
Umožňuje odstraňovat záznamy z tabulek. |
DROP |
Umožňuje odstraňovat tabulky nebo databáze. |
FILE |
Umožňuje manipulovat se soubory serverového počítače. |
INDEX |
Umožňuje přidávat nebo odstraňovat indexy. |
INSERT |
Umožňuje přidávat do databáze nové záznamy. |
PROCESS |
Umožňuje sledovat a odstraňovat procesy systému MySQL. |
REFERENCES | Nepoužívá se. |
RELOAD |
Umožňuje používat příkaz FLUSH. |
SELECT |
Umožňuje spouštět výběrové dotazy. |
SHUTDOWN |
Umožňuje vypnout službu MySQL. |
UPDATE |
Umožňuje upravovat existující záznamy v databázi. |
USAGE |
Umožňuje připojit se k serveru. |
seznam sloupců můžete nepovinně doplnit, na které
sloupce tabulky se budou vybraná privilegia vztahovat.názevdatabáze.názevtabulky můžete doplnit
názevdatabáze.názevtabulky nebo můžete použít zástupný znak
* (*.* znamená, že privilegia aplikujete globálně
na všechny databáze, Názevdatabáze.*, že je aplikujete na
jednu celou databázi).uživatelskéjméno@názevhostitele, přičemž v
části názehostitele můžete použít zástupný znak %
(má stejnou funkci jako * výše).GRANTPříklad vytvoření uživatele Martin s heslem termistor, který se může k databázi připojit jen z počítače, na kterém je databáze spuštěna, a který má veškerá privilegia na všechny tabulky všech databází:
GRANT ALL PRIVILEGES
ON *.* TO Martin@localhost
IDENTIFIED BY "termistor";
mysql_setpermission
Další možnost udělování privilegií je program
mysql_setpermission. Spustíte ho z příkazového řádku. Je to
jednoduchý program, který umožňuje jen základní nastavení. Práce s ním je
ale velmi rychlá a intuitivní.
Uživatele můžete odstranit jen pomocí dotazu SQL na tabulky uživatelských účtů. Uživatele odstraníte takto:
DELETE FROM user WHERE User = "Uživatel_kterého_chcete_odstranit"
AND Host="%";
DELETE FROM db WHERE User =
"Uživatel_kterého_chcete_odstranit" AND Host="%";
atd. (musíte samozřejmě odstranit všechny záznamy příslušející uživateli ve všech tabulkách).
REVOKE)
Privilegia můžete odstranit také pomocí dotazů SQL. Lepší je ale použít
příkaz REVOKE, jehož syntaxe je:
REVOKE {privilegia} [(seznam sloupců)] [, {privilegia} [(seznam sloupců)]...]
ON názevdatabáze.názevtabulky
FROM uživatelskéjméno@názevhostitele;
Za privilegia můžete doplnit stejná privilegia jako v
případě příkazu GRANT.
Všechna privilegia uživatele Uživatel odstraníte takto:
REVOKE ALL ON *.* FROM UŽIVATEL@%;
Takto ale odvoláte jen privilegia, která přísluší uživateli v případě, že se přihlašoval do systému ze vzdáleného počítače. Pokud se mohl přihlašovat i z místního počítače, musíte zadat ještě:
REVOKE ALL ON *.* Uživatel@localhost;
Tabulky uživatelských účtů jsou uloženy v databázi mysql.
Privilegia můžete uživatelům udělovat globálně (tabulka user),
na určitou databázi (tabulka db), v rámci určitého hostitele
(tabulka host), na určité tabulky určité databáze (tabulka
tables_priv), nebo na určité sloupce určité tabulky určité
databáze (tabulka columns_priv).
Uživatele stejně jako jejich privilegia můžete vytvářet a odstraňovat
přímými úpravami tabulek uživatelských účtů. Privilegia můžete udělovat i
příkazem GRANT a odstraňovat příkazem REVOKE.
I když databázi správně zabezpečíte, data v bezpečí stále ještě nebudou. Aby byly, je nutné databázi zálohovat. Jak na to se dozvíte v příštím dílu - zabývá se importem/exportem dat do databáze a protokolováním transakcí.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Musim se priznat, ze s MySQL 4.x jsem jeste nepracoval. Momentalne pouzivam MySQL 3.23.52. Pri psani serialu jsem cerpal z manualu k teto verzi.
Co nejdrive to ale napravim a pokud budou zmeny takove, ze neco z mnou napsaneho uz nebude platit, samozrejme clanek doplnim. Bohuzel to bude nejaky cas trvat, takze do zitrka to rozhodne nebude 
diky :)
Reseni by bylo (doma) zapnout protokolovani zmen dat a struktury tabulek. (Do souboru protokolu se zapisou vsechny SQL prikazy, ktere vyvolaly zmenu dat nebo struktury tabulek) a pak (na serveru) davkove spracovat SQL prikazy z (doma) vznikleho souboru protokolu.
Pristi dil se bude protokolovanim transakci zabyvat. Primo o synchronizaci se tam nezminuji, ale ono to z toho vyplyva. I kdyz zminit bych se o tom mohl
.
use mysq a pak INSERT INTO user...;, nesmíte zapomenout po tomto příkazu zavolat ještě flush privileges;. Teprve pak MySQL-server přizpůsobí své chování změnám v tabulce user a dovolí novému uživateli přihlášení.