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


11

我有一个使用cPanel和phpmyadmin的托管帐户。

我有50个数据库,都是WordPress。

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

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

希望找到一种可以针对所有数据库的解决方案,而不必一一遍遍。

谢谢

Answers:


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

我的主机对授予shell访问权限很奇怪,并且他们负责执行这样的自定义命令。我已经开始浏览每个数据库并手动更新它们。谢谢您的帮助:)
比利(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');

或者,如果您能够在此服务器上安装代码,请通过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");

2
我同意本文的第一部分,构建一个包含schema_name的SQL查询,然后运行它。如果需要,您甚至可以在Excel中构建它-假定您拥有可以放入一列的所有50个数据库名称...
Dave Rix 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.