私はこのような何かを実行したい:SELECT権限なしで特定のレコードを更新するにはどうすればよいですか?
UPDATE grades SET status="pass" WHERE recno=123;
は、しかし、私はそれがSELECTアクセス権を持っていないことを意味し、データベースへの書き込み専用アクセス権を持つようにアップデートを実行するユーザーアカウントをしたいです。これにより、WHERE句が失敗します。
実際にはレコード全体を書き換えることができますが、recnoが主キーであるため書き込みが失敗します。方法はありますか
INSERT INTO grades (recno,name,status,...) VALUES (123, 'chemistry', 'pass',...)
ON DUPLICATE KEY UPDATE <everything>;
これは間違ったアプローチですか?また、「特定のレコードの特定のフィールドを更新する」問題に対する一般的な解決策ではありません。
さらに詳しい情報:ログをリモートサーバーに書き込むアプリケーションがあります。アプリケーションは、プロシージャの開始時に「不完全」のステータスで新しいレコードを書き込みます。このステップは、Mysqlサーバーから自動的に生成されたrecno値を受け取ります。プロセスが完了したら、そのレコードのステータスフィールドを新しい値で変更したいと思います。誰でもアプリケーション上で文字列を実行してログイン資格を取得できるため、そのアカウントにデータベースへの書き込み専用アクセス権を与える必要があります。 –
「誰でもデータベース上で文字列を実行できる」とはどういう意味ですか?あなたは誰でもあなたのデータベースに_write_へのアクセスを許可しますか?それは非常に危険です。 – kba
誰かが*アプリケーション*で文字列を実行できるということを意味しました。例えば。誰でもアプリをリバースエンジニアリングして、ログイン情報が何であるかを知ることができます。ですから、そのログインをその機能に必要な操作だけに制限したいのです。 –