[Oracle] CREATE USER のユーザー名をダブルクォーテーションで囲わないで!
この前誰かが作ったCREATE USER文をそのまま流した時にハマりました。
そのSQLは、CREATE USER句に指定するユーザー名をダブルクォーテーションで囲ってありました。
こんな感じ
CREATE USER "aiueo" IDENTIFIED BY "aiueo" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;
「ユーザーが作成されました」と表示されるので、特に気にしてなかったのですが、このユーザーでログインしようとするとエラーになります。
sqlplus aiueo/aiueo@testdb ERROR: ORA-01017: invalid username/password; logon denied
どうも「”aiueo”」というユーザーが作成されたようです。
この場合は、ログイン時にユーザー名を「”aiueo”」と指定する必要があります。
そのため、上記のようなsqlplusコマンドの後ろにユーザー名を指定することができません。(方法はあるかも)
CSEなどのツールでもユーザー名欄に「”aiueo”」を入力する必要があります。
これはかなり不便です。
ユーザーがうまく作成できていないのかとユーザー一覧を見ても、ダブルクォーテーションは表示されていないので、間違いに気づかないのです。
select username from all_users
USERNAME
————–
aiueo
SQLDeveloperなどのツールを使用してユーザー作成していれば問題にはならないのですが、どこかから持ってきたスクリプトを流用する場合は、気をつけましょう。。
ちなみに、このユーザーを削除する際にもダブルクォーテーションが必要になりますので、注意が必要です。
消したいのにユーザーが存在しませんと言われてパニックになります。
drop user "aiueo";
本当に紛らわしい。。。
== ランキングに参加しています。ぜひクリックお願いします ==
ネクタイは防寒具! LEFT JOINはLEFT OUTER JOINの省略形