Ejecutando SQL Query en todas las bases de datos

11

Tengo una cuenta de hosting con cPanel y phpmyadmin.

Tengo 50 bases de datos en esta cuenta, todas WordPress.

Necesito modificar esta consulta para que se ejecute en todas las bases de datos para actualizar la contraseña.

ACTUALIZACIÓN 'wp_users' SET 'user_pass' = MD5 ('alguna contraseña') DONDE 'user_login' = 'admin' LIMIT 1;

Esperando una solución que pueda apuntar a todas las bases de datos en lugar de tener que revisarlas una por una.

Gracias

Porra
fuente

Respuestas:

11

No puedo decir nada sobre cPanel y phpmyadmin, pero en general puedo hacerlo escribiendo un script simple.

He escrito un script de shell para ti

#!/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
fuente
Mi anfitrión es extraño acerca de dar acceso a shell y me cobran por hacer comandos personalizados como este. Ya comencé a revisar cada una de las bases de datos y a actualizarlas manualmente. Gracias por ayudarme :)
Billy
8

Intente ejecutar esto y luego corte y pegue la salida nuevamente en 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');

o, si puede instalar código en este servidor, instale Common Schema de Shlomi Noach y ejecute el siguiente QueryScript

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");
Aaron Brown
fuente
2
Estoy de acuerdo con la primera parte de esto, construya una consulta SQL que contenga el nombre_esquema y simplemente ejecútelo. Incluso podría compilarlo en Excel si fuera necesario, suponiendo que tenga los 50 nombres de base de datos que podría poner en una columna ...
Dave Rix