- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザー名にアンダーバーを含む場合のデータベース作成について)
ユーザー名にアンダーバーを含む場合のデータベース作成について
このQ&Aのポイント
- ユーザー名にアンダーバーを含む場合のデータベース作成についての質問です。
- SQLを実行すると、特定のデータベースに対してALL権限を持つユーザーが作成されます。
- ALL権限にはCREATE権限も含まれますが、特定のデータベースに対してALL権限を与えた場合、そのデータベースに対してCREATE権限も付与されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
アンダースコア脆弱性のことかな http://news.livedoor.com/article/detail/546720/ 概要、_ アンダースコアは、SQLのワイルドカードのため、そのままでは、何か1文字にマッチしてしまうということ(ワイルドカードを使いたい状況もあるので、使えなくはできない) 対策:データベース名にアンダースコアが含まれる場合、バックスラッシュで(Unixシェルによっては2つ)エスケープされるべき。どんなコマンドにおいても常にということ。 http://dev.mysql.com/doc/refman/5.1/ja/mysqlshow.html
その他の回答 (1)
noname#119957
回答No.1
ALL権限には「create database」を許可するCREATE権限が含まれます >> そうではなく、CREATE TABLE の使用を許可するのではありませんか? 「demotdemo」などのデータベースが作成できてしまうのはmysql の仕様でしょうか? >>OSのファイル名作成の仕様ではありませんか?
質問者
補足
回答ありがとうございます。 マニュアルにはCREATE権限は「create database」と「create table」の権限とあるのです。 また、「OSのファイル名作成の仕様」の部分が理解できなかったのですが、データベース名がなんであれ、最終的な作成可否についてはデータベースサーバーが判断するところと思うのですが、私の理解がまちがえてるのでしょうか? お願いします。
お礼
回答ありがとうございます。 アンダースコア脆弱性!まさにこれでした。ありがとうございます。 てっきりgrant の際のユーザー名のアンダースコアが今回の症状に影響していると思ってましたが、grant のデータベース名が影響してたんですね。 とってもすっきりしました。ありがとうございました。