เรียกใช้ SQL Query บนฐานข้อมูลทั้งหมด


11

ฉันมีบัญชีโฮสติ้งหนึ่งบัญชีโดยใช้ cPanel และ phpmyadmin

ฉันมี 50 ฐานข้อมูลภายใต้บัญชีนี้ทั้งหมด WordPress

ฉันต้องการแก้ไขแบบสอบถามนี้เพื่อให้ทำงานผ่านฐานข้อมูลทั้งหมดเพื่ออัปเดตรหัสผ่าน

อัปเดต 'wp_users' SET 'user_pass' = MD5 ('somepassword') WHERE 'user_login' = 'ผู้ดูแลระบบ' 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

โฮสต์ของฉันแปลกเกี่ยวกับการให้สิทธิ์การเข้าถึงเชลล์และพวกเขาคิดค่าบริการสำหรับการทำคำสั่งที่กำหนดเองเช่นนี้ ฉันเริ่มผ่านแต่ละฐานข้อมูลแล้วอัปเดตด้วยตนเอง ขอบคุณที่ช่วยฉัน :)
Billy

8

ลองใช้วิธีนี้แล้วตัด n วางผลลัพธ์กลับเข้าไปใน 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โดย 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 ที่มี schema_name และเรียกใช้ที่ คุณยังสามารถสร้างมันใน Excel ถ้าคุณจำเป็นต้อง - ทะนงคุณมีชื่อฐานข้อมูล 50 ที่คุณสามารถใส่ลงไปในคอลัมน์ ...
เดฟ Rix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.