2

mysql のインタラクティブな mysql_secure_installation script の機能を複製する、非常に単純なことをしたいと思います。私の質問は、SELECT クエリの出力を DROP ユーザーまたは DROP データベース スクリプトの入力と組み合わせる簡単な組み込みの方法が MySQL にあるということです。

たとえば、空のパスワードを持つすべてのユーザーを削除したい場合。DROP USER ステートメントでそれを行うにはどうすればよいですか? 明らかな解決策は、たとえば Python スクリプトからすべてを実行することです。

  1. でクエリを実行するmysql -Bse "select..."
  2. いくつかのプログラムで出力を解析します
  3. ドロップ クエリを構築する
  4. それを実行します。

単純な SQL クエリでそれを行う簡単な方法はありますか? ここでいくつかの例を見てきましたが、単純とは言えません: https://stackoverflow.com/a/12097567/518169

組み合わせたクエリを作成することをお勧めしますか、それとも単に Python や bash スクリプト/sed などを使用して出力を解析することをお勧めしますか?

4

2 に答える 2

3

SQL を動的に構築できます。次に例を示します。

SELECT CONCAT('DROP USER ', GROUP_CONCAT(QUOTE(User), '@', QUOTE(Host)))
INTO   @sql
FROM   mysql.user
WHERE  PASSWORD = ''

次に、それからステートメントを準備します。

PREPARE stmt FROM @sql

次に、そのステートメントを実行します。

EXECUTE stmt

最後に、準備されたステートメントの割り当てを解除します。

DEALLOCATE PREPARE stmt
于 2012-09-09T21:34:27.310 に答える