0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:MySQLのユーザー権限設定で ERROR 1410 に遭遇した件を自分なりに調べてみた

Posted at

はじめに

MySQLでアプリケーションからデータベース接続を行おうとした際に、GRANT 文を使ってユーザーに権限を与えようとしてエラーが発生することがあります。

本記事では、「ERROR 1410: You are not allowed to create a user with GRANT」というエラーが出たときの原因とその対処方法について、具体的なステップを交えて解説します。

書こうと思ったきっかけ

DockerコンテナからMySQLに接続するFlaskアプリケーションを構築中、MySQLユーザーに権限を与えようとして「ERROR 1410」が発生しました。

一見、正しいユーザーでログインしているにもかかわらず権限付与が失敗する原因を調査し、MySQL 8.x の仕様変更が関係していることがわかりました(自分調べ)。

そこで、同じような環境で困っている方の参考になればと思い、この記事を書くことにしました。

MySQLで「ERROR 1410: You are not allowed to create a user with GRANT」が出たときの対処法

■ 発生したエラー

ERROR 1410 (42000): You are not allowed to create a user with GRANT

このエラーは以下のSQLを実行した際に発生:

GRANT ALL PRIVILEGES ON flask_db.* TO 'root'@'%';

■ 調査と前提条件

  • SELECT CURRENT_USER(); の結果: root@localhost
  • SHOW GRANTS FOR 'root'@'localhost'; の結果: WITH GRANT OPTION が付与されている

上記より、root@localhost は完全な権限を持っていることが確認できた。

■ 原因

MySQL 8.x 以降のセキュリティ強化により:

  • GRANT ... IDENTIFIED BY の構文が実行できない
  • 'user'@'%' というホスト指定でのGRANT も制限される場合がある

■ 解決策 (OpenCanvas)

Step 1: ユーザーの新規作成

CREATE USER 'flaskuser'@'%' IDENTIFIED BY 'flaskpass';

Step 2: 権限の付与

GRANT ALL PRIVILEGES ON flask_db.* TO 'flaskuser'@'%';
FLUSH PRIVILEGES;

Step 3: Flaskアプリ側の修正

app.py

def get_db_connection():
    return mysql.connector.connect(
        host='192.168.1.11',
        user='flaskuser',
        password='flaskpass',
        database='flask_db'
    )

■ ポイント

  • root ユーザーをアプリに使わない
  • % ホストはDockerなどの外部接続用に適している
  • ホストの範囲や権限は本番環境では精密に設定する

まとめ

MySQLでユーザー権限を設定する際は、バージョンによる構文の違いやセキュリティ仕様の変更に注意が必要です。

MySQL 8.x以降では、GRANTIDENTIFIED BYを組み合わせることができないなどの制限があり、従来通りの方法ではエラーになることがあります(自分調べ)。

アプリケーション用には専用のユーザーを作成し、必要な権限だけを与えることで、より安全で柔軟な設計が可能になります。

今後も同様のエラーが発生した場合に備えて、手順や原因を明確にしておくことが大切です。この記事が、開発中にMySQLと格闘している方の助けになれば幸いです!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?