• ベストアンサー

ユーザ名に使用できない文字・記号は?

MySQL上でユーザ名に使用できない文字や記号(キーボードから直接入力できるもの限定で)にはどのようなものがあるのでしょうか? (いろいろ試したところ「#」「!」「$」「%」はできるようなのですが・・・)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

以前は16文字まで(英数小文字)って記述がマニュアルにあったので改めて調べてみたんですが、今はそんな記述が見当たらないです。ただ、誤解を生じると思うので例えば「'」「@」「%」など、ユーザー名の中で意味を持つ文字は登録できたとしても使用は避けておいた方が良いのでは?ユーザー名の登録といったって、登録自体は単なるテーブルへのインサートですから、何でもできちゃっておかしくはないですよね。ただ、今後の色々な動作を考えると、あまり変な記号は避けておいた方が無難ではないでしょうか。

progx200xi
質問者

補足

回答ありがとうございます。 >以前は16文字まで(英数小文字)って記述がマニュアルにあった これも試してみましたが、今(Ver4.11Win版)でも17文字以上は受け付けないようです。 >登録自体は単なるテーブルへのインサートですから、何でもできちゃっておかしくはないですよね。 ということは、システム的には1バイト文字なら使用できないものはないと考えていいのでしょうか? 「CUIベースのプログラムで、ユーザ名を入力してログインするときに(無限ループ対策もかねて)プログラムの終了コマンドとユーザ名の重複を避けるためにはどうすればいいのか?」というのがこの質問を投稿した発端だったのですが、どんな文字も使えるということは、解決策としては「終了コマンドを17文字以上にする(コマンドとしては長いですが・・・)」といったぐらいしかないということになるのでしょうか?

その他の回答 (1)

回答No.2

>ということは、システム的には1バイト文字なら使用できないものはないと考えていいのでしょうか? いえ、そういう意味ではないです。mysqlのユーザー登録って単にDB"mysql"のuserテーブルにデータを挿入するだけじゃないですか。grant文で追加するならともかくinsert文で追加するとしたらここでの文字種チェックなどないでしょうから、登録だけはできるだろう、ただ、ちゃんと使えるかどうかは別、という事です。 >「CUIベースのプログラムで、ユーザ名を入力してログインするときに(無限ループ対策もかねて)プログラムの終了コマンドとユーザ名の重複を避けるためにはどうすればいいのか?」 ここの意味がわからないのですが、CUIベースのプログラムというのはmysqlにアクセスする事自体が目的のプログラムですか?もしそうであればユーザーによって必要な権限が変わる場合もあるのでわかるのですが、そのプログラムからmysqlにアクセスする時に必要な権限がユーザーによって変わらないのであれば、プログラムからアクセスするためのユーザーを作成して適切な権限を与えて、プログラムからはそのユーザーでmysqlに接続するようにした方が良いのではないでしょうか? また、ユーザー名を入力させるとしても、入力チェックを行って怪しい文字ははじく処理が必要ではないですか?どんな形であれユーザーに入力させた文字を入力チェックなしにmysqlに送る事はセキュリティ上危ないと思いますよ。

関連するQ&A