• 締切済み

FILE権限があるはずなのにSQLファイルを実行出来ない

MySQL 3.23.58(Linux)です。 testというデータベースを作成し、ユーザtestuserにこのtestデータベースへのFILE権限やUPDATE権限など一通り持たせています。 ユーザ「testuser」でMySQLにログインし、use test;とすると、Database Changedと出てデータベースの編集が可能になるのですが、 mysql -u testuser -p ***** test < backup.sql この様にbackup.sqlというSQLファイルを実行しようとすると、ERROR 1044のアクセス権限がありませんエラーが表示されてしまいます。 SQLファイルをtestデータベースに反映させるにはどうすればいいでしょうか?

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

手動でいいのでしたら、ログインして、use test をしてから source backup.sql; としてやればbackup.sql内に書いてあるものが実行されます。

tomatocot
質問者

補足

ご回答ありがとうございます。 でもログインせず外部スクリプトで実行したいのです。

関連するQ&A

  • MySQLの.sqlファイルを実行する方法?

    こんにちは,よろしくお願いします。 MySQLの勉強を始めたばかりです。 解説書に付属しているCDの.sqlという拡張子のファイルでデータベースを作ろうとしているのですが何度やってもうまくいきません。 mysql> というmysqlのコマンドラインに, c:\・・・\create.sql -u user1 -p と入力して実行すると, --------- c: --------- ERROR: Unknown Command ’¥a’. となります。 どうすれば,正常に実行できるのでしょうか?教えてください。よろしくお願いします。

  • SQLの管理権限のあるユーザーを調べたい

    【理想】 既にSQLServerExpress2005以降(以下SQL)が入っているPCに対して、 SQLの管理者権限がないユーザーがインストーラーを実行した際、 ・このユーザーは管理権限がないこと ・管理権限があるユーザーは○○というユーザーなので、○○というユーザーで ログインし直してからインストールして欲しい というメッセージを出したい 【現状】 SQLをデータベースとして開発したソフトウェアがあり、 インストーラーを実行すると、SQLと開発したソフトウェアが自動インストールされるようになっています。(既にSQLがインストールされている場合はSQLはインストールしない) インストーラーは、Inno Setupを利用しています。 ここで問題になっているのが、 既にSQLがインストールされているPCにインストールしてもらった際に、 SQLの管理者ではないユーザーでインストールしようとするとエラーになることです。 ユーザーに上記を伝えて、権限のあるユーザーでやり直してもらって(もしくは一旦SQLをアンインストールして)、再度上記インストーラーを実行してもらう必要があるのですが、権限のあるユーザーが誰か答えられるユーザーがほどんどいません。 今は、インストーラーを実行した際、既にインストールされていれば、 仮のデータベースを作るテストをしてみて、出来ればOK、出来なければ、「インストール出来ないから管理権限のあるユーザーでログインしてほしい」のようなメッセージを出してセットアップを中止するようにしています。 インストーラーを実行した際、管理権限のあるユーザーが誰なのかが分かる方法はないでしょうか。色々試してみたのですが、「管理者権限がない」という応答しか返って来ません。 同様の悩み(対応)は他のソフトでも同様だと思いますが、 どのように解決しているのかを教えて頂ければ助かります。 分かる方ご教授お願い致します。

  • mysqlでsqlファイルを実行したい

    コマンドプロンプトを起動して、mysqlで、sqlファイルを一括実行したいのですが、次の構文ですと、データベース名を入れなければなりません。データベースの作成もsqlファイルの中に書いてあるので、この段階では、データベースが存在しません。データベース名を入れないでsqlファイルを実行する構文がありましたら教えてください。 mysql -u root -D [dbName] -p < [FileName].sql

    • ベストアンサー
    • MySQL
  • MySQLにSQLを実行できない

    こんにちは。 今MySQLを勉強中なのですが、以下のようなエラーが解決できずに困っています。 どなたかお助けよろしくお願いいたします。 状況と致しまして、 レンタルサーバーにphpMyAdminを設置し 管理者に与えられたデータベースに「MLB」というテーブルを作成(特権なし)しました。 そこで以下のような単純なphpを組んで読み込んで見ることにトライしたのですが <?php //サーバーに接続 $my_Con = mysql_connect("localhost","データベース名","パスワード"); if($my_Con == false){ die("MYSQLの接続エラー"); }else{ echo "接続成功<br>"; if(mysql_select_db("データベース名",$my_Con)){ echo "データベースにアクセス成功<br>"; $my_Row = mysql("SELECT * FROM MLB",$my_Con); if(!$my_Row){ die(mysql_error()); } while($row = mysql_fetch_array($my_Row)){ echo $row["id"]; echo $row["stadium"]; echo "<br>"; } }else{ die("データベースへのアクセスエラー"); } } ?> 以下のようなエラーが出てしまい解決できない状態です。 接続成功 データベースにアクセス成功 Access denied for user 'データベース名'@'localhost' to database 'SELECT * FROM MLB' これは特権なしが影響しているのかな?とも考えたのですが、 調べてみた所、 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ root で接続をしようとする場合に、次のようなエラーが出るときには、'root' の User フィールドに、user テーブルのエントリがないことを示します。そのため、mysqld がクライアントのホスト名を識別できない状態です。 Access denied for user ''@'unknown' to database mysql この場合、--skip-grant-tables オプションでサーバを立ち上げ、/etc/hosts ファイル、または \windows\hosts で、ホストのエントリを付加します。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 解決になるらしいのですが、これはレンタルサーバー側に何か問題があるということでしょうか? どのように解決すればよいか、どなたかご教授をよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • コマンドラインから「.sql」ファイルを読み込んで一気に処理する

    例えば、「example.sql」というファイルに以下の二行が書いてあるとします。 create database aaa; create database bbb; これらをmysqlコマンドラインではなく、linuxのコマンドラインから「example.sql」を読み込んで、まとめて実行するにはどうしたらいいでしょうか。

    • ベストアンサー
    • MySQL
  • Usage: \.<filename> | source<filename> とはどういうことですか。

    C:直下に mysql フォルダ を置き、そのmysql フォルダの直下に test.sql を置きました。 test.sql の中味は、 create table shohin(・・・・・・・・); insert into shohin(a,b,) values(pqr,xyz); ・・・・・・ と書いています。 この準備により、databese[zaiko] の [shohin]テーブルに、一括してデータを書き込みたいと思って、 mysql> use zaiko Database changed mysql> \.test.sql とすると、 Error: Usage: \.<filename> | source<filename> というエラーが出ます。 mysql> mysql zaiko <\.test.sql としても同じエラーです。 Usage: \.<filename> | source<filename> とは、どういう意味のことを言っているのでしょうか? うまくデータが書き込むためには、どこを修正すればよいのでしょうか?

    • ベストアンサー
    • MySQL
  • ユーザー名にアンダーバーを含む場合のデータベース作成について

    ユーザー名にアンダーバーを含む場合のデータベース作成について mysql > create database demo_demo; mysql > grant all on demo_demo.* to demo_demo@localhost 上記のSQL を発行した場合、「demo_demo」というデータベースと、ローカルから「demo_demo」データベースにALL の権限の範囲内でアクセスできる「demo_demo」というユーザーが作成されると思います。ここで2点教えてください。 質問1: ALL権限には「create database」を許可するCREATE権限が含まれますが、上記「demo_demo.* 」のように、grant 時に特定のデータベースに対してのみALL権限を与えた場合の「create database」を許可するCREATE権限とはどういう意味を持つのでしょうか? 質問2: mysql > create database `demotdemo`; など、ユーザー名のアンダーバー部分に任意文字を当てたデータベースが無限に作成できてしまいます。アンダーバーがSQL的に「任意の一文字」に相当するとは理解していますが、「demotdemo」などのデータベースが作成できてしまうのはmysql の仕様でしょうか?また、ユーザーが「create database」可能かでないかの判定はどの権限で制御されているのでしょうか? 参考資料でもよいので教えてください。お願いします。

    • ベストアンサー
    • MySQL
  • 権限付与(変更)ができないです・・・・。

    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
  • 【コマンド】root権限 のコマンドを教えて下さい

    いつもお世話になっております。 この度、皆様に教えて頂きたい事象が発生しました。 内容は以下の1点です。 現在Linux上にデータベース(MySQL)があります。 通常MySQLの操作を行うには (1)rootユーザ (2)一般ユーザ (3)匿名ユーザ 等でログインして操作を行うかと思われます。 しかし、ここであえてMySQLでのユーザで操作するのではなくOS上のユーザ(root)で操作することは可能でしょうか? 教えて頂きたいことをまとめると 【質問】 Linuxにログインする際のユーザ(OSのrootユーザ権限)でMySQLのエクスポートやインポートを行うことは可能かどうか? *補足 MySQLのrootのPWを忘れたからこういうことをやりたいのか? ⇒ いいえ、違います。PWを忘れた際の対処法は知っております。   単純に、Linux(OS)全体を扱っているrootユーザ権限で、データベースをいじれるかどうか(エクスポート、インポートが可能か)を知りたいのです。 サーバ系の知識が豊富な玄人の方々、アドバイス等頂けましたら幸いです。 *無理という回答でも結構です。 できるか、できないかが知りたいのです。 よろしくお願い致します。 以上

  • PerlでMysqlのデータベース、テーブル作成

    はじめまして。 perlからMysqlのデータベースやテーブルを作成したいと思っております。 webを検索してみたのですが、どれもデータベースに接続してから、データの操作(挿入や削除など)をするものばかりで、データベースの作成などが見つかりません。 perlからデータベースの作成などは出来ないのでしょうか?また、出来るのでしたら、どのように書けばいいのでしょうか? 以下は、データベースに接続する場合です。 use DBI; $database="testdata"; $hostname="localhost"; $user = "aaa"; $password = "test"; $dsn="DBI:mysql:database=$database:host=$hostname"; $dbh = DBI->connect($dsn,$user,$password)||die $DBI::error; 宜しくお願いします。