2017-10-13 4 views
1

私はLinuxでMySQL 5.6を使用しています。INSERTを行うが、MySQLのいくつかの列の更新を拒否する方法?

私は3つの列(COLUMN1、COLUMN2およびCOLUMN3)のテーブルを持ちます。ここで、COLUMN3は​​確認情報YまたはN(デフォルトはN)を含む1文字列です。

単純なメーカーチェッカーの仕組みを実装したいと思います。

STOCKING部門のスタッフに、新しいレコードを追加するためのINSERT権限が必要です。その後、COLUMN1とCOLUMN2を入力できます。彼らはCOLUMN3の値を変更すべきではありません。しかし

をYにNからそれを更新するCOLUMN3にUPDATE権限を持っている

その後、経理部門のスタッフ、私は新しいレコードが挿入されると、ストッキングのスタッフがCOLUMN3を更新できる、ということが分かりました。実際には、私は彼らがそれを変更できるようにしたくありません。挿入後もデフォルト値Nを引き続き使用する必要があります。

一度新しいレコードを挿入すると、ユーザーは新しいレコードのすべての列ですべてを実行できます。

この状況では、MySQLのREVOKEアクションは役に立ちません。

MySQLにDENY UPDATEメカニズムがないように見えます。

誰も似たような経験を持ち、そのやり方を共有していますか?

おかげで、事前

+0

これはフロントエンドで実装する必要があります。ユーザーはdbに直接アクセスすべきではありません。 – serakfalcon

答えて

1

にあなたを約GRANT声明を知られている場合があります。あなたの部門に権限をどのように付与しているかについて話していないので、私はデータベース全体の権限を提供していると仮定しています。

多くのあなたがデータベース権限のようなGRANTステートメントを使用して割り当てることができる権限を、カラム権限などがあなたの要件は、あなたが以下のように行うことができ、列の権限を割り当てる必要があることを示してあります

のみ与える
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost'; 

ユーザーにはINSERT特権があり、更新はできません。

+0

ありがとう、それは動作します! –

+0

あなたの歓迎:) –

関連する問題