MySQLで、testとtest_*(*はワイルドカード)という名前のデータベースは(たとえ権限がなくても)誰でもアクセスでき、しかも一旦削除したとしても誰でも再作成することができます。


このtestデータベースを使えないようにする方法はあるのでしょうか?
例えば、my.cnfでの使用不可のオプションや、明示的に特定ユーザーがtestデータベースにアクセスできないようにする方法等があれば教えて頂きたいです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2010/09/11 09:45:32
  • 終了:2010/09/11 13:01:02

回答(3件)

id:tasklight No.2

tasklight回答回数323ベストアンサー獲得回数402010/09/11 10:07:04

ポイント70pt

testデータベースに対してもgrant文で権限設定はできるはずですが。

権限の設定」を参考にしてください。

id:keikubo

回答ありがとうございます。

GRANTは権限を付与するためのものだと認識していましたが、剥奪することもできるのでしょうか?

ドキュメントを読んだ限りだと、私にはその方法を理解することはできませんでした。

明示的にアクセスを拒否する方法があれば、SQL文等で示して頂けるとありがたいです。

2010/09/11 10:13:45

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 jkju777 36 15 0 2010-09-11 11:01:48
  • id:b-wind
    >GRANTは権限を付与するためのものだと認識していましたが、剥奪することもできるのでしょうか?
    権限削除は REVOKE
    この場合これでいけるかどうかは知らないけど。
  • id:keikubo
    RevokeはGrantで付与した権限を"破棄"する役割なので、そもそも権限を与えなくてもアクセスできるtestとtest_%データベースを使用不可にすることはできませんでした。

    MySQLのソースを読んで判明したのは、scripts/mysql_system_tables_data.sqlで、mysql.dbテーブルにtestとtest_%データベースにgrantsを与えていたのが問題の原因ということでした。これに対しては、mysql.dbに設定されていたこれらを削除するのみでよく、以下のコマンドを発行することで解決しました。

    >|mysql|
    mysql> delete from mysql.db where Alter_routine_priv='N';
    ||<

  • id:windofjuly
    うぃんど 2010/09/12 00:45:48
    ソースコードを読む実力の持ち主には釈迦に説法かもしれませんが
    関連事項がでてきますのでMySQLの「匿名ユーザー」についてググってみてください

    結果の一例
    http://dev.mysql.com/doc/refman/5.1/ja/post-installation.html
    http://dev.mysql.com/doc/refman/5.1/ja/default-privileges.html
    http://dev.mysql.com/doc/refman/5.1/ja/privileges.html

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません