Executando consulta SQL em todos os bancos de dados

11

Eu tenho uma conta de hospedagem usando cPanel e phpmyadmin.

Eu tenho 50 bancos de dados nesta conta, todos WordPress.

Preciso que essa consulta seja modificada para que seja executada em todos os bancos de dados para atualizar a senha.

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

Esperando uma solução que possa direcionar todos os bancos de dados em vez de precisar analisá-los um por um.

Obrigado

Billy
fonte

Respostas:

11

Não posso dizer nada sobre cPanel e phpmyadmin, mas em geral posso fazê-lo escrevendo um script simples.

Eu escrevi um script de shell para você

#!/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
fonte
Meu host é estranho em fornecer acesso ao shell e eles cobram por executar comandos personalizados como este. Eu já comecei a examinar cada um dos bancos de dados e atualizá-los manualmente. Obrigado por me ajudar :)
Billy
8

Tente executar isso e, em seguida, corte e cole a saída novamente no 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, se você conseguir instalar o código neste servidor, instale o Common Schema de Shlomi Noach e execute o seguinte QueryScript

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");
Aaron Brown
fonte
2
Concordo com a primeira parte disso, crie uma consulta SQL contendo o schema_name e execute-a. Você pode até mesmo construí-lo no Excel se for necessário para - presumindo que você tem todos os nomes de 50 db que você poderia colocar em uma coluna ...
Dave Rix