MySQLサーバーは--read-onlyオプションで実行されているため、このステートメントを実行できません

MySQLサーバーは--read-onlyオプションで実行されているため、このステートメントを実行できません

会議中に同僚から開発ライブラリを書き込めないとの報告を受けました。エラー メッセージは次のとおりでした。

1209 - MySQL サーバーは --read-only オプションで実行されているため、このステートメントを実行できません

通常、このエラーには 2 つの原因があります。

1. スレーブ データベースに接続します。スレーブ ライブラリは通常、読み取り専用に設定されます。

2. マスターデータベースのread_onlyパラメータが1に変更されます

開発者は通常のユーザーであり、このパラメータの値を変更する権限を持つべきではありません。

DBA はこのパラメータを積極的に変更しません。では、開発ライブラリを作成できない理由は正確には何でしょうか?

まず、部門内の 200 名を超える研究開発担当者がこの問題に遭遇したため、問題は開発者側にあるのではないことが確認されました。

まず問題を解決するには、マスター データベースの read_only パラメータの値を照会します。確かに、read_only は 1 に設定されています。

手動で 0 に変更すると、問題は解決します。問題は、なぜ read_only が 1 に設定されているのかということです。

解決手順は次のとおりです。

mysql> @@read_only を選択します。

+-------------+

| @@読み取り専用 |

+-------------+

| 1 |

+-------------+

セット内の 1 行 (0.00 秒)

mysql> グローバル read_only=0 を設定します。

クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql エラー ログを確認すると、次の情報が見つかりました。

151231 13:55:11 mysqld_safe 現在実行中のプロセス数: 0

151231 13:55:11 mysqld_safe mysqldが再起動されました

これは、MySQL が再起動されたことを示しています。再開の理由は何ですか?

システムログを確認したところ、次のエラーが見つかりました。

#tail -100f /var/log/メッセージ

12月31日 13:55:11 mysql2dev カーネル: [8680] 500 8680 27084 92 3 0 0 bash

12月31日 13:55:11 mysql2devカーネル: メモリ不足: プロセス12805 (mysqld) を強制終了するか、スコア964で子プロセスを犠牲にする

12 月 31 日 13:55:11 mysql2dev カーネル: プロセス 12805、UID 500、(mysqld) total-vm:13146848kB、anon-rss:7870704kB、file-rss:16kB を強制終了しました

12 月 31 日 13:55:11 mysql2dev カーネル: rsyslogdinvoked oom-killer: gfp_mask=0x201da、order=0、oom_adj=0、oom_score_adj=0

12月31日 13:55:11 mysql2dev カーネル: rsyslogdcpuset=/ mems_allowed=0-1

12月31日 13:55:11 mysql2dev カーネル: Pid:21035、通信: rsyslogd 汚染されていない 2.6.32-358.el6.x86_64 #1

12月31日 13:55:11 mysql2devカーネル: CallTrace:

このエラーから、メモリオーバーフローにより MySQL が再起動したことがわかります。

メモリ不足: プロセス 12805 (mysqld) スコア 964 を強制終了するか、子プロセスを犠牲にする

それで、メモリリークの原因は何でしょうか?

システムの履歴コマンドを確認したところ、同僚がバックアップを実行していたことがわかりました。当時、システムは大きな負荷がかかっており、セカンダリ システムにはスワップ パーティションが設定されていませんでした。上記の理由により、MySQL が再起動されました。

スワップ: 0 0 0

再起動すると read_only=1 になるのはなぜですか? 設定ファイルで read_only が設定されている可能性があります。設定ファイルを確認してください。

#grep 読み取り専用 my.cnf

読み取り専用 = オン

この時、開発環境が突然書き込めなくなった原因がようやく判明しました。

メインライブラリが read_only=on を設定するのはなぜかと疑問に思うかもしれません。それは、もともと MMM 環境だったからです。

MMM 環境が削除されたので、設定ファイルの read_only を 0 に設定します。これで開発ライブラリが書き込みできない問題は解決しました。

MySQL はエラーを報告します: MySQL サーバーは --skip-grant-tables オプションで実行されているため、このステートメントを実行できません、など。

1. mysqlにログインします: mysql –u root –p

mysql> グローバル read_only=0 を設定します。
(新しいマスターデータベースの読み取り専用属性をオフにします)

権限をフラッシュします。

2. /etcディレクトリにあるMySQL設定ファイルmy.cnfを変更します。

mysqlサービスを再起動します: service mysqld restart

エラー 1290 (HY000): MySQL サーバーは --skip-grant-tables オプションで実行されているため、実行できません。

このエラーは、MySQL 8.0.3のインストール中にパスワードをリセットしたときに報告されました。パスワードが設定されていない場合、mysqlを操作するには/etc/my.cnfにこのセクションを追加する必要があるためです。

#パスワード認証をスキップ

スキップ許可テーブル

しかし、この文を追加した後、MySQL は再びこのエラーを報告し、無限ループになりました。ようやく解決策を見つけました。

これは、権限が設定されているが更新されていないためです。

最初に実行する

権限をフラッシュします。

SQL文を再度実行すると成功します

ALTER USER 'root'@'localhost' を 'your password' によって mysql_native_password で識別します。

以下もご興味があるかもしれません:
  • mysql データベースmysql: [エラー] 不明なオプション ''--skip-grant-tables''
  • MySQL ビューの一貫性を確保する方法の詳細な説明 (チェック オプション付き)
  • MySQL に絵文字を保存するときに表示されるエラー メッセージ「java.sql.SQLException: 文字列値が正しくありません:'\xF0\x9F\x92\xA9\x0D\x0A...'」の解決方法
  • MySQL の NULL と空の文字列
  • ODBC経由でMySQLとPHPを任意のデータベースに接続する例
  • Ubuntu で apt-get を使用して mysql をインストールおよび完全にアンインストールする方法の詳細な説明
  • AES_ENCRYPT() と AES_DECRYPT() を使用して MySQL を暗号化および復号化する正しい方法の例
  • mysqlサーバーは--skip-grant-tablesオプションで実行されています
  • pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明
  • MySQL pt-slave-restart ツールの使い方の紹介

<<:  Ubuntu 20.04 は Wi-Fi に接続します (2 つの方法)

>>:  JavaScriptアップロードファイル制限パラメータケースの詳細な説明

推薦する

Navicateを使用してAlibaba Cloud Server上のMySQLに接続する

1. まず、サーバーの mysql にアクセスして権限を変更します。 GRANT オプション付きで、...

MySQL 5.7 JSON 型の使用の詳細

JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、...

検索履歴を実装するjQueryプラグイン

毎日jQueryプラグイン - 検索履歴を作成するためのものです。参考までに、具体的な内容は次のとお...

JS ES6 変数分割代入の詳細な説明

目次1. 脱構築とは何か? 2. 配列の分割3. 配列モードと代入モードの統一4. デフォルト値の構...

DOSBox を起動後に自動的にコマンドを実行する方法

DOSBox を使用すると、Windows で DOS をシミュレートし、楽しい作業を行うことができ...

MySQL初心者のための基本操作のまとめ

図書館運営クエリ1.SHOW DATABASE; ----すべてのデータベースを照会する2. SHO...

入力テキスト ボックスと画像検証コードの位置合わせの問題 (画像は常に入力より 1 つ上になります)

Web ページ制作では、input と img が同じ行に配置されることが多く、img タグが常に ...

MySQL 8.0.12 クイックインストールチュートリアル

MySQL 8.0.12 のインストールには 2 日かかり、さまざまな問題が発生しました。以下にまと...

JavaScript で円形のプログレスバー効果を実装する

この記事では、円形のプログレスバー効果を実現するためのJavaScriptの具体的なコードを参考まで...

ビジュアルデザイナーの成長の3つの段階のまとめ

この本「グラフィックデザイナーとして成長する」は多くの人が読んでおり、私もオリジナルの PDF 版を...

スマートCSSを使用して、ユーザーのスクロール位置に基づいてスタイルを適用します。

現在のスクロール オフセットを html 要素の属性に追加することで、現在のスクロール位置に基づいて...

HTML CSS の 3 つの一般的なスタイル セレクター

1: タグセレクタータグセレクターはすべてのタグに使用されます。ここでは p を例に挙げます。つまり...

CentOS7 64 ビットでの MySQL 5.7 のインストールと設定のチュートリアル

インストール環境: CentOS7 64ビットMINI版、MySQL5.7をインストール1. YUM...

HTMLテーブルではテーブルの外側の境界線のみが表示されます

質問があります。Dreamweaver で、3 行 1 列のログイン フォーム (ログイン、登録、パ...

MySQL ジョイントテーブルクエリの簡単な例

MySql は結合テーブルクエリを使用しますが、初心者には理解しにくい場合があります。以下の記事では...