Запуск SQL Query на всех базах данных

11

У меня есть одна учетная запись хостинга с использованием cPanel и phpmyadmin.

У меня есть 50 баз данных под этой учетной записью, все WordPress.

Мне нужно изменить этот запрос, чтобы он проходил через все базы данных для обновления пароля.

ОБНОВЛЕНИЕ 'wp_users' SET 'user_pass' = MD5 ('somepassword') WHERE 'user_login' = 'admin' LIMIT 1;

Надеемся на решение, которое может быть нацелено на все базы данных, вместо того, чтобы просматривать их по очереди.

Спасибо

Билли
источник

Ответы:

11

Я ничего не могу сказать о cPanel и phpmyadmin, но в целом я могу сделать это, написав простой скрипт.

Я написал скрипт для вас

#!/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
Абдул Манаф
источник
Мой хозяин странно относится к предоставлению доступа к оболочке, и они взимают плату за выполнение пользовательских команд, подобных этой. Я уже начал просматривать каждую из баз данных и обновлять их вручную. Спасибо, что помогли мне :)
Билли
8

Попробуйте запустить это и затем обрежьте и вставьте вывод обратно в 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');

или, если вы можете установить код на этом сервере, установите Common Schema by Shlomi Noach и выполните следующий QueryScript

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");
Аарон Браун
источник
2
Я согласен с первой частью этого, создаю запрос SQL, содержащий имя_схемы, и просто запускаю его. Вы могли бы даже построить его в Excel, если бы вам было нужно - предполагая, что у вас есть все имена в 50 дБ, которые вы можете поместить в столбец ...
Дэйв Рикс,