在所有数据库上运行 SQL 查询

Bil*_*lly 11 mysql phpmyadmin

我有一个使用 cPanel 和 phpmyadmin 的主机帐户。

我在这个账户下有 50 个数据库,都是 WordPress。

我需要修改此查询,以便它运行所有数据库以更新密码。

更新 'wp_users' SET 'user_pass' = MD5('somepassword') WHERE 'user_login'='admin' LIMIT 1;

希望有一个可以针对所有数据库的解决方案,而不必一个一个地通过它们。

谢谢

Abd*_*naf 11

我对 cPanel 和 phpmyadmin 无话可说,但总的来说,我可以通过编写一个简单的脚本来做到这一点。

我为你写了一个shell脚本

#!/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
Run Code Online (Sandbox Code Playgroud)


Aar*_*own 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');
Run Code Online (Sandbox Code Playgroud)

或者,如果您能够在此服务器上安装代码,请安装Shlomi Noach 的Common Schema并执行以下QueryScript

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

  • 我同意第一部分,构建一个包含 schema_name 的 SQL 查询,然后运行它。如果需要,您甚至可以在 Excel 中构建它 - 假设您拥有可以放入一列的所有 50 个 db 名称...... (2认同)