Nainstalovat mysql to je snadný žejo apt-get install mariadb a jedem 🙂
Jenže instalace obsahuje demo uživatele, demo databáze a občas jí je vidět zvenku. A protože je to notoricky známý existuje tool
mysql_secure_installation
Tento nástroj ušetří post instalaci a já nad rámec nástroje zkusím popsat cože se to na pozadí děje.
1.) výchozí instalace nemá heslo. takže root heslo na localhost nepotřebuje. Takže když se někdo dostane nějak dovnitř má roota na db.
"you haven't set the root password yet, the password will be blank,
so you should just press enter here.
You already have a root password set, so you can safely answer 'n'." <<--YES
heslo si nastavte.
2.) anonymní uživatelé. Mariadb v sobě má od instalace uživatele Anonymous kam se lze přihlásit jen tak. Tak to na produkci nechceme 🙂
"By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y <<-- Ano odstranit"
3.) root účet se smí přihlašovat zvenku. Pokud provozujete mysql jen uvnitř serveru není důvod dát útočníkům možnost hádat vaše poctivě recyklované heslo zvenku. Zevnitř se nástroji jako phpmyadmin do db dostanete, pouze to nepůjde zvenku. Je to užitečné a dvojnásob pro situaci kdy všichni mimo root uživatele smí do databáze přistupovat zvenku.
„Normally, root should only be allowed to connect from ‚localhost‘. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y <<– Ano nepovolit přihlášení přímo„
4.) Testovací datatabáte. defaultně má mysql databázi test přístupnou všem. protože přístupy se přidělují bez ohledu na existenci databáze je potřeba odebrat databázi „test“ i ten přístup zvlášť
"By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y <<--- ano odstranit databázi test a jejího uživatele"