MCP経由でAIにDBのデータを分析させる際に、読み取り専用のユーザーを使うと安全です。
作成する手順の簡易的なメモです。
1. ユーザー作成と権限付与
管理者権限を持つユーザーでDBに接続し、以下のSQLを実行します。
-- 1. ユーザーの作成
CREATE USER readonly_user WITH PASSWORD 'secure_password';
-- 2. スキーマへのアクセス許可
GRANT USAGE ON SCHEMA public TO readonly_user;
-- 3. 【既存】テーブルへの読み取り許可
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
-- 4. 【未来】のテーブルへの読み取り許可(重要!)
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly_user;
ポイント
特に重要なのが 4番目の ALTER DEFAULT PRIVILEGES です。 これを行わないと、「ユーザー作成後に新しく追加されたテーブル」が見えなくなってしまいます。 忘れずに実行しましょう。
2. 動作確認(テスト)
作成した readonly_user でログインし、挙動を確認します。
読み取り(SELECT)
SELECT * FROM users LIMIT 1;
-- 結果: データが取得できること
書き込み(INSERT/UPDATE/DELETE)
INSERT INTO users (name) VALUES ('test');
-- 期待される結果: ERROR: permission denied for table users
この permission denied(権限がありません) というエラーが出れば成功です。 「エラーが出ること」を確認して、作業完了となります。