Chạy SQL Query trên tất cả các cơ sở dữ liệu


11

Tôi có một tài khoản lưu trữ bằng cPanel và phpmyadmin.

Tôi có 50 cơ sở dữ liệu trong tài khoản này, tất cả WordPress.

Tôi cần sửa đổi truy vấn này để nó chạy qua tất cả các cơ sở dữ liệu để cập nhật mật khẩu.

CẬP NHẬT 'wp_users' SET 'user_pass' = MD5 ('somepassword') WHERE 'user_login' = 'admin' LIMIT 1;

Hy vọng cho một giải pháp có thể nhắm mục tiêu tất cả các cơ sở dữ liệu thay vì phải đi qua từng cái một.

Cảm ơn bạn

Câu trả lời:


11

Tôi không thể nói bất cứ điều gì về cPanel và phpmyadmin nhưng nói chung tôi có thể làm điều đó bằng cách viết một kịch bản đơn giản.

Tôi đã viết một kịch bản shell cho bạn

#!/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

Máy chủ của tôi rất kỳ lạ về việc cấp quyền truy cập shell và họ tính phí khi thực hiện các lệnh tùy chỉnh như thế này. Tôi đã bắt đầu đi qua từng cơ sở dữ liệu và cập nhật chúng theo cách thủ công. Cảm ơn bạn đã giúp tôi :)
Billy

8

Hãy thử chạy nó và sau đó cắt n dán đầu ra trở lại vào 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');

hoặc, nếu bạn có thể cài đặt mã trên máy chủ này, hãy cài đặt Lược đồ chung của Shlomi Noach và thực hiện các QueryScript sau

call common_schema.foreach( 'schema', "UPDATE `${schema}`.`wp_users` SET 'user_pass' = MD5('somepassword') WHERE 'user_login' ='admin' LIMIT 1");

2
Tôi đồng ý với phần đầu tiên của điều này, xây dựng một truy vấn SQL có chứa giản đồ tên và chỉ cần chạy nó. Bạn thậm chí có thể xây dựng nó trong Excel nếu bạn cần - giả sử bạn có tất cả 50 tên db mà bạn có thể đặt vào một cột ...
Dave Rix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.