77787
mysql等のDBではデータベース毎ではなくテーブル毎にパスワードをかけることはできますか？
CC BY-SA 4.0
2021-06-25T08:40:42.043
77786
2021-07-03T06:42:42.973
2021-07-03T06:42:42.973
3060
39481
question
mysql
データベースの各テーブルに対してパスワードを設定することは可能？
データベースやテーブルに対してパスワードを設定するのではなく、あくまで **アカウントに対して** パスワードを付与して権限を管理します。

権限は以下のようなレベルに応じて参照/変更などを設定することができます。

(代表的なもの)

  * データベースレベル
  * テーブルレベル
  * カラムレベル

参考:  
[ユーザーに設定できる権限の種類と一覧](https://www.dbonline.jp/mysql/user/index5.html#section1)
CC BY-SA 4.0
2021-06-25T09:01:18.100
77787
2021-06-25T09:01:18.100
3060
77786
answer
MySQLではテーブルごとに透過的テーブルスペース暗号化することができます。  
[テーブルごとのファイルテーブルスペースの暗号化](https://dev.mysql.com/doc/refman/8.0/ja/innodb-data-
encryption.html#innodb-data-encryption-enabling-disabling)

```

    mysql> CREATE TABLE t1 (c1 INT) ENCRYPTION = 'Y';
    
```

この仕組みで簡単にデータベースファイルを暗号化できるので、ファイル自体を盗まれたり悪用するためにダウンロードされても読めません。  
ただしSQL文を発行して中身を読むことは防げないのでSQLインジェクションなどの対策にはなりません。

参考: [MySQL と MariaDB
のテーブルスペース暗号化について](https://blog.s-style.co.jp/2017/06/783/)
CC BY-SA 4.0
2021-06-25T09:17:57.437
77788
2021-06-25T09:17:57.437
9820
77786
answer