新しいサーバーにデータベースを移行する予定です。移行段階では、Apacheユーザーがデータベースに何かを書き込めるようにしたくありません。 2つのオプションがあります。
書き込み権限を取り消す:
REVOKE INSERT, UPDATE ON `mydb`.* FROM 'Apache'@'localhost';
FLUSH PRIVILEGES;
データベースを読み取り専用モードに設定します。
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = 1;
どちらを選択するかについて、実際的な考慮事項はありますか?
オプション2を選択します
オプション2は次のように書くこともできます
FLUSH TABLES;
SET GLOBAL read_only = 1;
そうすれば、SET GLOBAL read_only = 0;
を実行するだけで、書き込みを再開できます。 読み取りロック付きのフラッシュテーブルは、トランザクションログ、やり直しログ、元に戻すログへのInnoDB書き込みを停止しません 。 SET GLOBAL read_only = 1;
があなたの友達です。
DBAの初期の頃、私はこれを使用していました。
CREATE TABLE mysql.usercopy LIKE mysql.user;
CREATE TABLE mysql.root LIKE mysql.user;
INSERT INTO mysql.usercopy SELECT * FROM mysql.user;
INSERT INTO mysql.root SELECT * FROM mysql.user WHERE user='root';
TRUNCATE TABLE mysql.user;
INSERT INTO mysql.user SELECT * FROM mysql.root;
FLUSH PRIVILEGES;
私が終わったとき、私はこれをしました
TRUNCATE TABLE mysql.user;
INSERT INTO mysql.user SELECT * FROM mysql.usercopy;
FLUSH PRIVILEGES;
それから、私は [〜#〜] super [〜#〜] を発見しました。
オプション2をそのまま使用するか、FLUSH TABLES WITH READ LOCK;
をFLUSH TABLES;
に変更します