Uruchamianie zapytania SQL we wszystkich bazach danych

11

Mam jedno konto hostingowe przy użyciu cPanel i phpmyadmin.

Mam 50 baz danych na tym koncie, wszystkie WordPress.

Potrzebuję zmodyfikować to zapytanie, aby działało we wszystkich bazach danych w celu aktualizacji hasła.

AKTUALIZACJA 'wp_users' SET 'user_pass' = MD5 ('somepassword') GDZIE 'user_login' = 'admin' LIMIT 1;

Nadzieję na rozwiązanie, które może celować we wszystkie bazy danych, zamiast przeglądać je jeden po drugim.

Dziękuję Ci

Pałka policjanta
źródło

Odpowiedzi:

11

Nie mogę nic powiedzieć o cPanel i phpmyadmin, ale ogólnie mogę to zrobić, pisząc prosty skrypt.

Napisałem dla ciebie skrypt powłoki

#!/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
źródło
Mój host jest dziwny w udzielaniu dostępu do powłoki i pobiera opłaty za wykonywanie niestandardowych poleceń takich jak ten. Już zacząłem przeglądać każdą z baz danych i aktualizować je ręcznie. Dziękuję za pomoc :)
Billy,
8

Spróbuj uruchomić to, a następnie wytnij i wklej dane wyjściowe z powrotem do 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');

lub, jeśli możesz zainstalować kod na tym serwerze, zainstaluj Common Schema autorstwa Shlomi Noach i wykonaj następujący skrypt QueryScript

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");
Aaron Brown
źródło
2
Zgadzam się z pierwszą częścią tego, zbuduję zapytanie SQL zawierające nazwę_schematu i po prostu uruchom to. Możesz nawet zbudować go w Excelu, jeśli zajdzie taka potrzeba - zakładając, że masz wszystkie 50 nazw dbów, które możesz umieścić w kolumnie ...
Dave Rix