MySQL Workbenchでデータをインポートしようとすると「Access Denied」というエラーが発生する

事象

MySQL Workbenchでデータをエクスポートし、Structure & Dataモードで新規作成したスキーマに対してデータをインポートを行った。
しかし、「Access denied; you need (at least one of) the SUPER privilege(s) for this operation」というエラーが発生して、データをインポートが行えない。

前提

  • 権限自体の設定は誤っていない、きちんと設定されている
  • log_bin_trust_function_creators = 1 は設定されている

対応方法

対応方法1:SQLを編集する

エクスポートした状態でそのままインポートしようとすると、権限を操作する様なSQLがいくつか出力されてしまっている。
そこで、MySQL Workbenchでインポートを行う前にSQLを編集すれば、インポートが行える。
MySQL5.7においては、(多分)以下をSQL文中から削除することで、インポートが行える様になる。

SET @@SESSION.SQL_LOG_BIN=0
SET @@GLOBAL.GTID_PURGED='';
DEFINER=`hogehoge`.@`hogehoge2`
SET @@SESSION.SQL_LOG_BIN=@@MYSQLDUMP_TEMP_LOG_BIN;
対応方法2:CUIにて-fオプションを用いる

MySQL Workbenchでインポートを行おうとすると、実行したSQLがコンソールに表示される。
そのSQLコマンドプロンプトにて実行を行う。
その際、-fオプションを付与して実行を行う。(※1)
そうすることで、対応方法1でエラーになっていた箇所はエラーメッセージは発生するものの、スキップしながら実行を行える。
但し、DEFINER~のところは編集していた方が好ましい(※2)。

※1 コンソールに表示されているSQLのオプションは、"-host"などの記載になっている場合があるので、その際には"--host"と編集して貼り付ける。
※2 前提条件に記載している権限の状態が誤っていないという部分に反しやすいので。自身では合っていると思っていても、実際には設定が足りていない、別の設定が効いてきてしまうという状態に陥りやすい(自身がそうなので…)。

Forkを用いたcherry-pickを行う方法

前提

  • Fork for Windowsを利用していること(※1)
  • cherry-pick(※2)を知っていること

※1 とはいえ、Mac版とかも同じかとは思いますが…
※2 ざっくり書くと、対象ブランチにコミットした内容を他のブランチに反映する際に、手でせっせこコピペ&コミットするのではなく、もう少し機械的に行う作業のこと

方法

1. まずは自分がコミットしたいブランチに対してモジュールをコミットする。
2. 別のコミットしたいブランチに切り替える。
3. 先ほどコミットした対象を右クリックし、Cherry-pick Commitをクリックする。

cheryy-pickを実行するための選択方法
4. ポップアップが出るのでOKを選択する。
5. コンフリクトしなければそのままコミットされるので、その後プッシュすればリモートリポジトリに反映できる。コンフリクトした場合は、マージ作業を行い、その後コミット&プッシュすれば良い。

補足事項

  • マージと比べ、どこから引っ張ってきたのか分からないので、追跡性には乏しい。とはいえ、手作業でブランチ切り替えてせっせこコミットするのと比べれば、段違いである。
  • 対象コミットの一部分のみをcherry-pickみたいなのは行えない(私がやり方知らないだけかも)ので、コミットする粒度は考える必要がある。但し、小さくし過ぎると、それだけcherry-pickする回数が増えるので、どの様な単位でコミットすべきかはケースbyケースである。

git-fork.com

P761 vhdファイルのマウントを用いて、バックアップファイルをマウント

Windowsのディスクの管理機能には、vhdファイルをマウントする機能が実装されている。
また、Windowsのバックアップファイル(システムイメージ形式)は、vhdファイルとして保存される。
そのため、ディスクの管理機能でマウントしてあげれば、ファイルレベルでのリストアが可能になる。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

P756 自動ログオンさせたい場合の簡単な解決方法

SysinternalsのAutologon.exeを使えばよい

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

P266 自動起動に関するレジストリ

[全ユーザーに対する自動実行]

HKLM\Software\Microsoft\Windows\CurrentVersion\Run ログイン時に毎回実行する
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce ログイン時に一度だけ実行する。実行後は値が削除される。
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx ログイン時に一度だけ実行する。実行後は値が削除される。RunOnceとは異なり、実行順序を制御できる。

[現在ログインしているユーザーに対する自動実行(コマンド)]

HKCU\Software\Microsoft\Windows\CurrentVersion\Run ログイン時に毎回実行する
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce ログイン時に一度だけ実行する。実行後は値が削除される。
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceEx ログイン時に一度だけ実行する。実行後は値が削除される。RunOnceとは異なり、実行順序を制御できる。

[自動実行(サービス)]

HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices ログイン時に毎回実行する
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce ログイン時に一度だけ実行する。実行後は値が削除される。

全ユーザーに対しログイン時に毎回コマンドを実行するレジストリバックドアの設置によく利用される。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

P228 Netcat for Windows

Netcat for Windows
https://joncraton.org/blog/46/netcat-for-windows/

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

P183 特殊なフォルダを素早く開く

コマンド(shell:は割愛) フォルダー
Administrative Tools 管理ツール
AppData アプリケーションデータ(%AppData%)
Cache インターネット一時ファイル
CD Burning 一時書き込みフォルダ
Common Desktop デスクトップ(全ユーザー共通)
Common Startup スタートアップ(共通)
Cookies Cookies
ControrlPanelFolder すべてのコントロールパネル項目
Desktop デスクトップ(ユーザー個別)
DocumentsLibrary ドキュメントライブラリ
Favorites お気に入り
Fonts フォント
History 履歴
Libraries ライブラリ
MyComputerFolder コンピューター
Personal マイドキュメント
Profile ユーザープロファイル
Public パブリック
Qucik Launch クイック起動
SendTo 送る
Start Meru スタートメニュー
Startup スタートアップ(ユーザー個別)
System システム

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習