Nechte následující 2 řádky selhat, pokud uživatel existuje a blahblah
na tom teď nezáleží:
create user 'root'@'localhost' identified by 'blahblah';
create user 'root'@'127.0.0.1' identified by 'blahblah';
Udělejte své granty:
grant all on *.* to 'root'@'localhost';
grant all on *.* to 'root'@'127.0.0.1';
Změňte heslo na něco, co si budete pamatovat:
set password for 'root'@'localhost' = password('NewPassword');
set password for 'root'@'127.0.0.1' = password('NewPassword');
Podívejte se, kolik máte uživatelů root. Skutečný uživatel je kombinace uživatel/hostitel. Heslo se zobrazí hashované:
select user,host,password from mysql.user where user='root';
nebo
select user,host,authentication_string from mysql.user where user='root';
Druhý výše je pro MySQL 5.7
Pokud získáte více než dva výše uvedené uživatele, zahoďte ostatní, například:
drop user 'root'@'%'; -- this is the wildcard hostname, can be a security risk
drop user 'root'@'::1';
Pořád máte jen 2? Doufám. Pro kontrolu použijte výše uvedené vybrané značky.
Nepřipojujte uživatelskou aplikaci pomocí root. root je pouze pro údržbu. Nezáleží na tom, zda se jedná o kód na straně serveru nebo zda jej spouští administrátor. Kód, který není zabezpečen a/nebo obsahuje škodlivé příkazy, se spustí jako root. Takže, právě proto.