• ベストアンサー
  • 困ってます

ユーザーへのディレクトリ権限付与について

WindowsXPのOracle9i環境にて、 まず、以下のようにしてユーザ「username」を作成しました。 create user username identified by Password default tablespace tab_space temporary tablespacetemp; grant dba,resource,connect to username; 次にsysユーザにて、CREATE DIRECTORY FILE_PATH as 'd:\temp'; ディレクトリを作成しました。 そして、そのディレクトリに対して、以下のように権限付与しようとすると、「ユーザ"username"が存在しません。」エラーが発生します。 grant READ,WRITE ON directory dir to username; また、grant READ,WRITE ON directory dir to public; とすると、権限付与は成功しますが、ユーザusernameにはディレクトリ参照権限は与えられていませんでした。 何か間違っておりますでしょうか? それとも何か手順で足らないものがあるのでしょうか? ご教示いただければと思います。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数9634
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.4
  • 3rd_001
  • ベストアンサー率66% (115/174)

dba_usersに出てこない以上、そのユーザはデータベース上には存在しないかと思います。 そのパッケージソフトが、どのような構成をしているのかわかりませんが、パッケージ上のユーザとデータベースのユーザが別なのではないでしょうか。 パッケージ上のAというユーザが、データベース上のXというユーザにログインして動作するというのは、よくあるパターンです。 パッケージのサポートに確認するのが良いかと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

おっしゃるとおりですね。どうも色々とありがとうございました!

その他の回答 (3)

  • 回答No.3
  • 3rd_001
  • ベストアンサー率66% (115/174)

提示した手順を行なってもユーザーが作成できないということでしょうか。 その場合、障害としか思えません。 ではなくて、当初作成したというユーザが存在しないという場合、作業間違いでユーザが作成できていないと思われます。 dba_usersに表示されない以上、そうとしか思えません。 再度、提示した手順を行い、その内容を提示してください。 でなければ、どの点がわるいのか切り分けできません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

本当に一から、つまり表領域からユーザから作成した場合はうまくユーザ作成できておりました。 今回の件ですが、説明不足で大変申し訳ありませんでしたが、あるパッケージにて自動作成されたユーザになります。ログから推測するに通常のユーザ作成かと思っておりましたが、ひょっとすると特殊な作成をされているのかもわかりません。 逆に、当然ながらDBには普通にログインできるユーザに対してそのようにSYSユーザからは見えないようなユーザにすることができるものなのでしょうか? 結局はそのユーザにディレクトリ権限を与えたいだけなのですが・・・。 申し訳ありません。ご教示いただければと思うのですが。。

  • 回答No.2

9iでやってみましたが、問題なく動きます。 (パッチも当ててないです) >次にsysユーザにて、CREATE DIRECTORY FILE_PATH as 'd:\temp'; >ディレクトリを作成しました。 ここでディレクトリの名前が「FILE_PATH」ですが、 >grant READ,WRITE ON directory dir to username; 上のSQLでは「dir」になってます。 この辺が原因では? p.s. ファイル出力は、3rd_001さんのを使用させていただきました。 ----------------------------------------------- 以下はログ C:\>sqlplus "sys/sysman as sysdba" SQL*Plus: Release 9.2.0.1.0 - Production on 日 Dec 21 17:05:26 2008 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production に接続されました。 SQL> create user username identified by hoge default tablespace users temporary tablespace temp; ユーザーが作成されました。 SQL> grant dba,resource,connect to username; 権限付与が成功しました。 SQL> CREATE DIRECTORY FILE_PATH as 'c:\temp'; ディレクトリが作成されました。 SQL> grant READ,WRITE ON directory FILE_PATH to username; 権限付与が成功しました。 SQL> connect username/hoge 接続されました。 SQL> declare 2 fh utl_file.file_type; 3 begin 4 fh := utl_file.fopen( 'FILE_PATH','hoge.txt','a',32767); 5 utl_file.put_line(fh, 'hoge'); 6 utl_file.fclose(fh); 7 end; 8 / PL/SQLプロシージャが正常に完了しました。 SQL> host dir c:\temp c:\temp のディレクトリ 2008/12/21 17:10 6 hoge.txt SQL> host type c:\temp\hoge.txt hoge SQL>

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • 3rd_001
  • ベストアンサー率66% (115/174)

当方、11gですが記載されている手順をそのまま実行したところ 全く問題なく出来ております。 以下が実際のSQLと結果です。 そちらの環境で、以下を実行しても駄目でしょうか? Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options に接続されました。 SQL> create user test01 identified by test01 default tablespace users temporary tablespace temp; ユーザーが作成されました。 SQL> grant dba,resource,connect to test01; 権限付与が成功しました。 SQL> CREATE DIRECTORY FILE_PATH as 'c:\temp'; ディレクトリが作成されました。 SQL> grant READ,WRITE ON directory FILE_PATH to test01; 権限付与が成功しました。 SQL> declare fh utl_file.file_type; begin fh := utl_file.fopen( 'FILE_PATH','hoge.txt','a',32767); utl_file.put_line(fh, 'hoge'); utl_file.fclose(fh); end; / PL/SQLプロシージャが正常に完了しました。 SQL> exit Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。 more c:\temp\hoge hoge

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 作成したユーザーがSYSユーザーから見えていないようで権限付与ができません。 select username from dba_usersで確認した中に見当たりません。なので権限付与ができないのです。「ora-01917ユーザー又はロールは存在しません。」が発生します。

関連するQ&A

  • DBへの権限付与について

    MySQLで、ユーザーを作成しGRANT文でDBへの権限を 付与したのですが、DBにアクセスできません。 原因がわかりましたら、教えていただけますでしょうか。 まず、rootユーザーでユーザーを作成し、DBへの参照権限を付与。 >GRANT ALL ON TESTDB.* TO USER01@localhost IDENTIFIED BY 'passwd'; rootユーザーで権限を確認。 >SHOW GRANTS FOR USER01@localhost; GRANT USAGE ON *.* TO 'USER01'@'localhost' GRANT ALL PRIVILEGES ON `TESTDB`.* TO 'USER01'@'localhost' ユーザー:USER01 でログインし、DBの参照を確認。 > SHOW DATABASES; information_schema SHOW DATABASES の結果に、TESTDB が出てくるはずと 思うのですが、なぜ表示されないのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 参照権限の付与方法

    環境は、Windows Server 2003、Oracle 9.2.0.6.0 になります。 userAが持っている表、ビューの参照権限を userBに与えようと思います。 userAでログインし、以下のSQLを発行したところ、  grant select any table to userB; 以下のエラーが出ました。  ORA-01031:権限が不足しています。 これは、userAに権限を付与する権限がないのだと 理解しました。 ■疑問1 この現象は、userAに権限を付与する権限がない との理解で正しいでしょうか? また、userAに「権限を付与する権限」を付与するには どのようなSQLを発行すればよいでしょうか? ■疑問2 systemユーザでログインし、userBに権限を与える方法も あると思います。 その場合、以下のSQL文になると思います。  grant select on userA.testtable to userB この場合、表、ビュー1つずつ与える必要がありますが、  grant select any table to userB; のように、全ての表、ビューを参照権限を与えることはできるでしょうか?

  • ユーザー名について(権限付与の例)

    GRANT (権限名) on (オブジェクト) to ABC とします。 ユーザー名ABCは使用中のPCのオラクルの中にもありますし、遠隔で使用しているサーバーにもあるとします。 接続はいつも ABC/(Pass)@(サーバー名) です。 上のGRANT文ですと、使用中のPCに付与されています。 遠隔のABCに付与する場合どうするのでしょうか?

  • ORACLE

    CREATE DIRECTORY FILESXX AS 'e:\image\'; GRANT READ,WRITE ON DIRECTORY FILESXX TO PUBLIC; で作成した。パスを'd:\image\に変更したいのですが やり方がわからなくて困っています。 誰か助けてください。

  • MYSQL ユーザ作成について

    MYSQLのユーザ作成についてご質問させて頂きます。 管理者権限のあるユーザにてmysqlデータベースに接続し、 /usr/bin/mysql mysql -u admin -D mysql -p ユーザを作成しました。 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ON DB名.* TO ユーザ名@localhost IDENTIFIED BY 'パスワード'; さまざまなサイトに記載されているとおり FLUSH PRIVILEGES; も行い、ユーザ一覧を確認してみると select * from mysql.user \G 権限が付与されていません。 Select_priv: N と表示されています。 エラー文が出てくるわけではないのでエラーではないと思いますが なぜなのでしょうか? ご教示ください。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • oracleでexpdpを使いデータをexport

    こんにちは 現在oracleでexpdpを使い、目的のテーブルをexportしたいと思っていますが、エラーが出て出来ません。 oracleのバージョンは10.2です 行った作業は下記です 1sqlplusにログイン >sqlplus ユーザ名/パスワード@データベース別名 2.ディレクトリオブジェクトの作成 >create directory ディレクトリオブジェクト名 as 'ディレクトリのフルパス'; 3.使用ユーザにディレクトリに対する読み込み書き込み権限を付ける >grant read,write on directory ディレクトリオブジェクト名 to ユーザ名; 4.sqlplusからログオフし、ディレクトリを作成。rootで入り、chmodで777にディレクトリの権限を変更 expdpを実行 この時のユーザーはgrant権限で読み込み書き込みを与えたユーザー >expdp ユーザ名/パスワード@データベース別名 DIRECTORY=ディレクトリオブジェクト名 DUMPFILE=ダンプファイル名 LOGFILE=ログファイル名 ==ここからエラーが出ます== ORA-39001: 引数値が無効です ORA-39000: ダンプ・ファイル指定が無効です ORA-31641: ダンプ・ファイル"/xxxx/xxxx.dmp"を作成できません ORA-27040: ファイルの作成エラー、ファイルを作成できません SVR4 Error: 13: Permission denied ご存知の方いらっしゃいましたらエラー退避方法教えていただけないでしょうか? どうぞよろしくお願いいたします

  • SYSTEM表領域にインポートされてしまう

    TASC_DATA表領域にインポートしたいのだが、 CREATE USER で 間違ってますか? CREATE USER TASC_USER IDENTIFIED BY TASC_USER DEFAULT TABLESPACE TASC_DATA TEMPORARY TABLESPACE TASC_TEMP PROFILE DEFAULT / GRANT CONNECT TO TASC_USER / GRANT RESOURCE TO TASC_USER / GRANT CREATE ROLE TO TASC_USER / GRANT EXECUTE ANY PROCEDURE TO TASC_USER / GRANT UNLIMITED TABLESPACE TO TASC_USER /

  • 権限付与(変更)ができないです・・・・。

    CentOS5.2, MySQL version: 5.0.45 を使用しています。 現状のユーザ権限は次のようになっています。 mysql> use mysql Database changed mysql> select host, user, select_priv, insert_priv, update_priv, delete_priv from user; +-----------+---------+-------------+-------------+-------------+-------------+ | host | user | select_priv | insert_priv | update_priv | delete_priv | +-----------+---------+-------------+-------------+-------------+-------------+ | localhost | root | Y | Y | Y | Y | | abcd | taro | N | N | N | N | +-----------+---------+-------------+-------------+-------------+-------------+ これを スーパーユーザで入り、 mysql> grant all privileges on DB.* to 'taro'@'abcd' identified by 'password' with grant option; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) として終了し、クライアントから接続しなおしましたが、taroの権限が Y になりません。 どうすれば Y にすることができるでしょうか?

    • ベストアンサー
    • MySQL
  • Oracle 10g 権限付与

    はじめまして Oracle10gで、今度新しいデータベースが始動します。 問題なのが、管理者向けに発行するIDと、一般ユーザ向けに発行するIDの違いです。 管理者には参照・更新、参照権限付与・更新権限付与。 一般ユーザには参照、更新(それぞれテーブルごとに申請を出してもらう)、管理者から権限をもらう。 という仕組みになりました。 月に3度から4度、新しいテーブルができます。そのたびにgrantオプション付で管理者に権限付与するのも大変です。 select anyでは、テーブルごとの切り分けができません。 Oracle10gには詳しくないのですが(そもそもOracleにそんなに詳しくないのですが)、何かOracle10gの新機能など、使えそうなものはないでしょうか。 よろしくお願いいたします。

  • 全権限をもつユーザの追加方法

    環境 DB:mysql-5.0.70-r1 OS:WindowsXP上のVMWearServerにゲストOSとして構築したGentoo 質問内容 emerge mysql でmysql をインストール後、rootユーザが作成されていない ため、mysqlにログインできませんでした。my.cnfに skip-grant-tables を追加して、ログイン後 mysqlデータベースにたいし、 select * from user; でEmpty setと返ってきたため、そう判断しました。 また、このモードでは、たとえば、 GRANT ALL ON *.* TO hoge@"localhost"IDENTIFIED BY "hogehoge"; などができません。 どうすれば、全権限をもったユーザを作成できるのでしょうか。 何卒回答を宜しくお願い致します。

    • ベストアンサー
    • MySQL