Ausführen von SQL Query für alle Datenbanken


11

Ich habe ein Hosting-Konto mit cPanel und phpmyadmin.

Ich habe 50 Datenbanken unter diesem Konto, alle WordPress.

Ich muss diese Abfrage so ändern, dass sie alle Datenbanken durchläuft, um das Kennwort zu aktualisieren.

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

In der Hoffnung auf eine Lösung, die auf alle Datenbanken abzielt, anstatt sie einzeln durchgehen zu müssen.

Vielen Dank

Antworten:


11

Ich kann nichts über cPanel und phpmyadmin sagen, aber im Allgemeinen kann ich es tun, indem ich ein einfaches Skript schreibe.

Ich habe ein Shell-Skript für Sie geschrieben

#!/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

Mein Host ist komisch, wenn es darum geht, Shell-Zugriff zu gewähren, und er berechnet Gebühren für solche benutzerdefinierten Befehle. Ich habe bereits begonnen, die einzelnen Datenbanken zu durchsuchen und manuell zu aktualisieren. Danke, dass du mir geholfen hast :)
Billy

8

Versuchen Sie dies auszuführen und schneiden Sie dann die Ausgabe aus und fügen Sie sie wieder in phpMyAdmin ein

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');

Wenn Sie Code auf diesem Server installieren können, installieren Sie Common Schema von Shlomi Noach und führen Sie das folgende QueryScript aus

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");

2
Ich stimme dem ersten Teil davon zu, erstelle eine SQL-Abfrage, die den Schemanamen enthält, und führe diese einfach aus. Sie könnten es sogar in Excel erstellen, wenn Sie müssten - vorausgesetzt, Sie haben alle 50-dB-Namen, die Sie in eine Spalte einfügen könnten ...
Dave Rix
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.