Zrychlení MySQL příkazu SHOW DATABASES při desetitisících DB - Printable Version
+- Ashus.ashus.net (
https://ashus.ashus.net)
+-- Forum: My creations (
https://ashus.ashus.net/forum-3.html)
+--- Forum: Guides / Návody (
https://ashus.ashus.net/forum-8.html)
+--- Thread: Zrychlení MySQL příkazu SHOW DATABASES při desetitisících DB (
/thread-128.html)
Zrychlení MySQL příkazu SHOW DATABASES při desetitisících DB -
Ashus - 23.8.2012
Načítání PhpMyAdminu při 20 000 databázích je docela problém, trvá to okolo 4 minut. Vymyslel jsem řešení, které načítání solidně zrychlí (nehledají se složky, ale selectuje se z databáze).
Nejprve je nutno vytvořit ControlUsera - pojmenoval jsem ho
phpmyadmin_optimizer. Je nutné mu přidělit právo SELECT na
mysql.db.Db a
mysql.db.User..
Code:
CREATE USER 'phpmyadmin_optimizer'@'localhost' IDENTIFIED BY '';
GRANT SELECT (`Db` , `User`) ON `mysql`.`db` TO 'phpmyadmin_optimizer'@'localhost';
Následně do konfigurace config.inc.php vložíte toto:
Code:
$cfg['DisplayDatabasesList'] = 'auto';
$cfg['Servers'][$i]['controluser'] = 'phpmyadmin_optimizer';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['ShowDatabasesCommand'] = "SELECT Db FROM `mysql`.`db` WHERE User LIKE (SELECT IF(('#user#'='root'),'%','#user#'))";
Zajistíte zobrazení všech databází rootovi, ale ostatním uživatelům necháte zobrazit jen databáze, které jim patří.