タカハシシステム : WordPress(マルチサイト)のadminユーザーを変更する

WordPress(マルチサイト)のadminユーザーを変更する

公開日:2013年4月19日 / 最終更新日:2023年05月06日

全世界のWordPressサイトに大規模攻撃; デフォルトのアドミンユーザ名’admin’がねらわれている

最初から「admin」じゃなくて想像されにくいユーザー名にしておくべきだったのですが、残念ながら「admin」を使ってるサイトがありました。

ということで作業しようとしたところ(マルチサイトにしてたのが原因か?)管理画面から変更できなかったので … データベースを直接変更した際のメモです。出来ない原因も探った方がよさそうですが、それはまた別の機会に。

WordPressのバージョンは3.5.1(マルチサイトを利用)くれぐれも作業は自己責任でお願いします!ちゃんとバックアップを取っておいてくださいね。

一般的なadminの削除方法

一般的な(?)マルチサイトのadmin削除(変更)方法です。

  1. 新しいユーザーを作成する
  2. 作成したユーザーに特権管理者権限を与える
  3. ログアウトして新しく作成したユーザーでログインする
  4. 「admin」の特権管理者権限を外す
  5. 「このユーザーはネットワーク管理者用メールを持っているため特権管理者権限は削除できません。」と表示される場合は、adminのメールアドレスを変更する
  6. 「admin」が削除できるようになるので削除する

マルチサイトじゃない場合は以下の記事がわかりやすかったです。素敵!
乗っ取られる前にセキュリティ強化。WordPressのadminユーザーを変更(削除)する方法

上記の方法じゃ削除できなかった

ユーザー一覧から「削除」をクリックしても反応がなくて(空振りしてしまう)削除できませんでした。あんまりやりたくないけど … とりいそぎDBを直接変更するしかなさそうです。

迂闊にDBをいじると最悪の事態(データが全部消えてしまう)が起こるかもしれませんので慎重に。

しょうがないのでDBを直接変更

以下を「admin」から新しいユーザー名「hogehoge(例)」に変更。


■ wp_users
ユーザー名(必須):user_login
ニックネーム(任意):user_nicename
ブログ上の表示名(任意):display_name

■ wp_usermeta
ニックネーム(任意):nickname

■ wp_sitemeta
特権管理者(必須):meta_key = site_admins


「wp_sitemeta」の「meta_value」はシリアライズされてるので注意。

たぶんこんな感じ「a:1:{i:0;s:5:”admin”;}」になってるので、
こんな感じ「a:1:{i:0;s:8:”hogehoge”;}」に変更。

sはバイト数なので「admin」から「hogehoge」に変えるなら「5」から「8」に変えなくちゃいけないです。

(補足)シリアライズ

配列をデータベースに保存したい場合に使います。

これをデータベースに保存したい場合は
array([0] => hogehoge)

こんな感じでシリアライズ
[php]
<?php
echo serialize(array([0] => hogehoge));
?>
[/php]
実行結果 → a:1:{i:0;s:8:”hogehoge”;}

ちなみにアンシリアライズはこんな感じ
[php]
<?php
print_r(unserialize(‘a:1:{i:0;s:8:"hogehoge";}’));
?>
[/php]
実行結果 → array([0] => hogehoge)

メモでした。

同じカテゴリーの記事

twitterやってます。フォローいただけたら嬉しいです!