Menjalankan SQL Query di semua basis data

11

Saya punya satu akun hosting menggunakan cPanel dan phpmyadmin.

Saya memiliki 50 database di bawah akun ini, semuanya WordPress.

Saya perlu kueri ini dimodifikasi sehingga berjalan melalui semua database untuk memperbarui kata sandi.

MEMPERBARUI 'wp_users' SET 'user_pass' = MD5 ('somepassword') DI MANA 'user_login' = 'admin' LIMIT 1;

Berharap untuk solusi yang bisa menargetkan semua database daripada harus melalui mereka satu per satu.

Terima kasih

Billy
sumber

Jawaban:

11

Saya tidak bisa mengatakan apa-apa tentang cPanel dan phpmyadmin tetapi secara umum saya dapat melakukannya dengan menulis skrip sederhana.

Saya telah menulis skrip shell untuk Anda

#!/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
sumber
Tuan rumah saya aneh memberikan shell akses dan mereka mengenakan biaya untuk melakukan perintah kustom seperti ini. Saya sudah mulai memeriksa setiap basis data dan memperbaruinya secara manual. Terima kasih telah membantu saya :)
Billy
8

Coba jalankan ini dan kemudian potong n tempel output kembali ke 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');

atau, jika Anda dapat menginstal kode pada server ini, instal Skema Umum oleh Shlomi Noach dan jalankan QueryScript berikut

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");
Aaron Brown
sumber
2
Saya setuju dengan bagian pertama ini, membangun query SQL yang mengandung schema_name, dan jalankan saja. Anda bahkan dapat membangunnya di Excel jika Anda perlu - dengan anggapan Anda memiliki semua nama 50 db yang dapat Anda masukkan ke dalam kolom ...
Dave Rix