Exécution de SQL Query sur toutes les bases de données

11

J'ai un compte d'hébergement utilisant cPanel et phpmyadmin.

J'ai 50 bases de données sous ce compte, toutes WordPress.

J'ai besoin que cette requête soit modifiée afin qu'elle s'exécute dans toutes les bases de données pour mettre à jour le mot de passe.

UPDATE 'wp_users' SET 'user_pass' = MD5 ('somepassword') WHERE 'user_login' = 'admin' LIMIT 1;

En espérant une solution capable de cibler toutes les bases de données au lieu de les parcourir une par une.

Je vous remercie

Gamelle
la source

Réponses:

11

Je ne peux rien dire sur cPanel et phpmyadmin mais en général je peux le faire en écrivant un script simple.

J'ai écrit un script shell pour vous

#!/bin/bash

# mysql credential 
user="root"
pass="root"

# list of all databases
all_dbs="$(mysql -u $user -p$pass -Bse 'show databases')"        

for db in $all_dbs
     do
        if test $db != "information_schema" 
            then if test $db != "mysql" 
            then mysql -u$user -p$pass $db -sN -e "UPDATE wp_users SET user_pass = MD5('somepassword') WHERE user_login ='admin' LIMIT 1;"
        fi
    fi  
     done
Abdul Manaf
la source
Mon hôte est bizarre de donner un accès au shell et ils facturent pour faire des commandes personnalisées comme celle-ci. J'ai déjà commencé à parcourir chacune des bases de données et à les mettre à jour manuellement. Merci de m'aider :)
Billy
8

Essayez d'exécuter cela, puis coupez et collez la sortie dans phpMyAdmin

SELECT CONCAT('UPDATE `',     
    schema_name, '`.\'wp_users\' SET \'user_pass\' = MD5(\'somepassword\') WHERE \'user_login\' =\'admin\' LIMIT 1;')
FROM information_schema.schemata
WHERE schema_name NOT IN ('information_schema','mysql','performance_schema','test');

ou, si vous pouvez installer du code sur ce serveur, installez Common Schema par Shlomi Noach et exécutez le QueryScript suivant

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");
Aaron Brown
la source
2
Je suis d'accord avec la première partie de ceci, construisez une requête SQL contenant le schema_name, et lancez juste cela. Vous pouvez même le construire dans Excel si vous en avez besoin - en supposant que vous avez tous les 50 noms de base de données que vous pouvez mettre dans une colonne ...
Dave Rix