2012-04-20 3 views
15

この質問は好奇心から出てきます。私はこれについてgoogleを検索したが、ヒントを得ていない。sqlは読み取り専用モードで接続しています

ユーザーがMySQLデータベースに対して完全な読み取り/書き込みアクセス権を持っているとします。私は、読み取り専用モードで同じユーザー名とパスワードでデータベースに接続する方法(接続文字列のいくつかのパラメータ)があるのだろうか?

がこのユーザーのアクセス許可を変更することなくに変更したいのですが、同じユーザーが別の時に書き込み許可を必要とする可能性があるためです。これは、データベースの誤った変更を防ぐために(可能であれば)便利です。

+0

関連する質問を確認してください。 http://stackoverflow.com/questions/654656/odbc-5-1-connection-string-for-mysql-with-read-only-access http://stackoverflow.com/questions/10122745/mvc3-read-only-mysql-connection-string – hgulyan

+1

これらによれば、接続文字列による読み取り専用アクセスを指定する方法はありません。実際には、読み取り専用権限を持つsqlユーザーを作成するか、ソフトウェアのビジネスロジックにアクセス許可レイヤーを作成する必要があります。 – hgulyan

答えて

4

ここでの最適な解決策は、mysqlサーバ上でreadonly権限を持つ別のアカウントを作成し、それを使用して接続することです。

+0

私は知っています。しかし、これがないとオプションがあるのだろうかと思っていたのですか?ありがとう。 – gtiwari333

+0

悲しいことに、そうではありません。あなたのデータベース内のすべてのテーブルを読み込みのために即座にロックするなど、賢明なやり方をすることを検討しましたが、(a)並行性の悪夢を引き起こし、(b)UNLOCK TABLESを悪用した場合、あなたのクエリでロックを使用することから(readonlyセッションはおそらくそれをとにかく使用する可能性は低いですが。)あなたは目標システムに関するより多くのことを知っているので、LOCK TABLES tablename READがあなたのために働くならば、そうでなければ、最高のやり方は2人のユーザーに読み取り専用があることです。 –

11

あなたの質問への答えは

ありません、接続文字列に読み取り専用アクセスを指定する方法はありません。

代替はそれらに

MS SQLをチェックロジック権限を持つビューまたはストアドプロシージャを作成、読み取り許可

MVC3 Read-Only MySql Connection String

2.を持つSQLユーザーを作成します

1.ですGrant permission to only a view

MySQLのGrant a user permission to only view a mysql view

3.ビジネスロジック

幸運の権限層を実装!

+0

3番目の項目には、MS SQL Server用のリンクがあります。 MySQLで同様のアクセスを保証する方法がわかりません。 –

+1

@GeorgeBaileyビューレベルでの権限の付与については、項目2を意味しますか?キャッチをありがとう。私はMySQLのためのリンクを追加しました、構文が似ているようです。再度、感謝します! – hgulyan

0

あなたのユースケースやコントロールによっては、接続直後にコードを「set transaction read only」と呼ぶか、接続時に--init-commandパラメータを使用することができます。これは、我々が持っているテストユースケースのために働いた

ここでは、設定されたトランザクションの文書です:https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html同様にあなたはそれが差異をhttps://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_transaction_read_onlyとするセッション変数として設定することもできます。

関連する問題