MariaDB/MySQLでデータベースを読み取り専用にする方法


  1. ユーザーレベルでの読み取り専用設定: ユーザーごとに読み取り専用権限を設定することができます。以下のコマンドを使用して、ユーザーに読み取り専用権限を与えます。

    GRANT SELECT ON database_name.* TO 'username'@'localhost';

    上記のコマンドを実行すると、'username'というユーザーが特定のデータベース(database_name)の全てのテーブルに対してSELECT権限を持つようになります。このユーザーは読み取り操作のみが可能となります。

    必要に応じて、特定のテーブルやカラムに対してのみ読み取り権限を与えることも可能です。

  2. データベースレベルでの読み取り専用設定: データベース全体を読み取り専用にする場合は、以下の手順を実行します。

    • MariaDBの場合:

      SET GLOBAL read_only = ON;
    • MySQLの場合:

      SET GLOBAL innodb_read_only = ON;

    上記のコマンドを実行すると、データベース全体が読み取り専用モードになります。ただし、この設定は再起動後に解除されるため、必要に応じて設定を永続化する必要があります。

  3. 読み取り専用モードの確認: 読み取り専用モードの設定が正しく行われたかどうかを確認するには、以下のコマンドを使用します。

    SHOW GLOBAL VARIABLES LIKE 'read_only';

    上記のコマンドを実行すると、読み取り専用モードの状態が表示されます。

以上の方法を使用することで、MariaDBまたはMySQLデータベースを読み取り専用に設定することができます。必要に応じて、適切な方法を選択してください。