🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

3011閲覧

【MySQL Workbench】あるはずの権限が認識されない

EbiTT

総合スコア12

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/01/02 08:41

編集2021/01/02 08:46

前提・実現したいこと

下記の記事を参考に,現在制作しているWebアプリで使うDBをphpmyadminからWorkbenchにエクスポートし,herokuのclearDBアドオンと連携させました。記事の最後の方に示されているWorkbenchでDBのテーブル内容を確認するというところまではできています。

HerokuでWebサービスを公開する手順

全ての権限(all priviledges)を付与したユーザーで,アプリ使用上必要最低限の権限のみを付与した(アプリの一般ユーザー)用のユーザーを新しく登録したいと思っています。

発生している問題・エラーメッセージ

Workbenchで(magellanはDB名です)
grant select,update,delete,insert on magellan.* to normaluser identified by "******";

このSQLを実行したところ

Error

1//返ったエラーメッセージ 2Error Code:1044 3Access denied for user 'b645e101b5c1cf'@'%' to database 'magellan' 0.188 sec 4//b645e101b5c1cfはall priviledgesの付与されたはずのユーザーです

このようになったため,Error Code:1044を調べたところどうやら必要な権限が無いことが原因らしいので先ほどと同じくWorkbenchでshow grantsを打ったところ

Grnats

1//ここから1行目 2GRANT USAGE ON *.* TO 'b645e101b5c1cf'@'%' 3IDENTIFIED BY PASSWORD <secret> 4WITH MAX_QUERIES_PER_HOUR 3600 MAX_USER_CONNECTIONS 10 5//ここまで1行目。ここから2行目 6GRANT ALL PRIVILEGES ON `heroku_2858d635cc9aeb1`.* TO 'b645e101b5c1cf'@'%' 7//以上

なお,heroku_2858d635cc9aeb1はWorkbenchでのスキーマ名です
この内容を見る限りb645e101b5c1cf'@'%all priviledgesが付与できていそうな感じではあるのですが,そうするとエラーメッセージと矛盾してしまいます。
どのようにすれば最初のSQLを実行できるのでしょうか...。

補足情報(FW/ツールのバージョンなど)

MySQL 5.0.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ユーザーAがユーザーBのGRANTを行うには、ユーザーAの権限はGRANT ALLでは足りず、WITH GRANT OPTIONも必要です(MySQL 5.6マニュアル)。

投稿2021/01/02 10:20

maisumakun

総合スコア145977

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EbiTT

2021/01/02 11:05

`GRANT ALL PRIVILEGES ON magellan.* TO 'b645e101b5c1cf'@'%' with grant option;` を発行したところ `Error Code: 1044. Access denied for user 'b645e101b5c1cf'@'%' to database 'magellan' 0.172 sec` と返ってきてしまいました。そもそも`grant option`がないユーザーが自身に`grant option`を付ける(日本語ごちゃごちゃですが)ことはできるのでしょうか...
EbiTT

2021/01/02 11:26

ドキュメントの提供,ありがとうございます herokuでMySQLの使える代わりのDBアドオンを探してみます。 何か良いアドオンや方法がありましたら教えてくださると非常に助かります。
EbiTT

2021/01/02 11:33

初学者なので大変にはなりますが,AWS RDSを使ってみます。 何かアドバイスなどあれば教えていただけますでしょうか。
guest

0

(かなり前の質問のため、既に対応済みかと思いますので、無視で構いません。)
本件私もまったく同じ状態になって解決したので、今後コレ見られた時用に書いておきます。

【対策】
MyAdminからインポートしたsqlデータの24.25行目付近に以下SQLが入っていると思います。
それを以下のように変更します。

// 変更前(MyAdminからエクスポート直後) CREATE DATABASE IF NOT EXISTS `<MyadminのDB名>` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `MyadminのDB名`; ↓ // 変更後(Workbenchへインポート時) CREATE DATABASE IF NOT EXISTS `herokuのDB名` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `herokuのDB名`;

変更前のDB名はあくまでMyAdmin(ローカル環境)上のDBであり、今回は本番環境用にWorkbench上で使うDBに変えなくてはいけないので、この処理を行います。

※補足
この時、エラーが出ていたSQLの処理を行う時、「既にDB有るからこのSQLは無視します!」っていう警告出ますが、無視で大丈夫です!
それ以降のSQL(CREATEやINSERT)の実行に走るので!

投稿2021/02/16 13:25

kuma_kuma0121

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問