Magento 2 Installation - Datenbankrechte umgehen

Magento 2 Installation - Datenbankrechte umgehen

Die richtige Analyse und Strategie

Da man nicht bei jedem Hoster die kompletten Datenbank-Rechte besitzt, kann es vorkommen, dass nach erfolgreicher Eingabe deiner Daten für die Datenbank folgende Fehlermeldung erscheint:

Database user does not have enough privileges. Please make sure SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER privileges are granted to table 'usr_p370798_3'.

Da diese Rechte aber nicht von Magento 2 benötigt werden, können wir diese Abfrage auch umgehen und im Quellcode auskommentieren. Wechseln Sie von ihrem Root-Verzeichnis zu setup/src/Magento/Setup/Validator/ und ändern Sie in der Datei DbValidator.php im Bereich der Funktion checkDatabasePrivileges die entsprechenden Checks auf die einzelnen Prüfungen. Diese auskommentieren und den Installationsvorgang fortsetzen.

        private function checkDatabasePrivileges(\Magento\Framework\DB\Adapter\AdapterInterface $connection, $dbName)

         {

         $requiredPrivileges = [

         'SELECT',

         'INSERT',

         'UPDATE',

         'DELETE',

         'CREATE',

         'DROP',

         'REFERENCES',

         'INDEX',

         'ALTER',

         'CREATE TEMPORARY TABLES',

         'LOCK TABLES',

         'EXECUTE',

         'CREATE VIEW',

         'SHOW VIEW',

         'CREATE ROUTINE',

         'ALTER ROUTINE',

         'EVENT',

         'TRIGGER'

         ];

        

         // check global privileges

         /*$userPrivilegesQuery = "SELECT PRIVILEGE_TYPE FROM USER_PRIVILEGES "

         . "WHERE REPLACE(GRANTEE, '\'', '') = current_user()";

         $grantInfo = $connection->query($userPrivilegesQuery)->fetchAll(\PDO::FETCH_NUM);

         if (empty(array_diff($requiredPrivileges, $this->parseGrantInfo($grantInfo)))) {

         return true;

         }*/

        

         // check table privileges

         /*$schemaPrivilegesQuery = "SELECT PRIVILEGE_TYPE FROM SCHEMA_PRIVILEGES " .

         "WHERE '$dbName' LIKE TABLE_SCHEMA AND REPLACE(GRANTEE, '\'', '') = current_user()";

         $grantInfo = $connection->query($schemaPrivilegesQuery)->fetchAll(\PDO::FETCH_NUM);

         if (empty(array_diff($requiredPrivileges, $this->parseGrantInfo($grantInfo)))) {

         return true;

         }

        

         $errorMessage = 'Database user does not have enough privileges. Please make sure '

         . implode(', ', $requiredPrivileges) . " privileges are granted to table '{$dbName}'.";

         throw new \Magento\Setup\Exception($errorMessage);

         */

         }

        

October CMS: Eigene Komponente(Plugin) entwickeln
ProcessWire - Deutsches Sprachpaket fürs Backend