web-dev-qa-db-ja.com

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

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

私はこのアカウントで50個のデータベースを所有しています。すべてWordPressです。

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

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

データベースを1つずつ経由する必要がなく、すべてのデータベースをターゲットにできるソリューションを期待しています。

ありがとうございました

11
Billy

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
11
Abdul Manaf

これを実行してから、出力を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");
8
Aaron Brown