すべてのデータベースでSQLクエリを実行する


11

cPanelとphpmyadminを使用する1つのホスティングアカウントを持っています。

このアカウントの下に50のデータベースがあり、すべてWordPressです。

このクエリを変更して、すべてのデータベースを実行してパスワードを更新する必要があります。

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

データベースを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

私のホストはシェルアクセスを与えることについて奇妙であり、彼らはこのようなカスタムコマンドを実行するために課金します。私はすでに各データベースを調べ、手動で更新し始めています。助けてくれてありがとう:)
ビリー

8

これを実行してから、出力を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のdb名がすべてあると想定します...
Dave Rix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.