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アップロードファイル制限パラメータケースの詳細な説明

推薦する

MySQL 5.7.18 リリース インストール ガイド (bin ファイル バージョンを含む)

インストール プロセスは、コンパイル手順を除いて、基本的にソース バージョンと同じです。この記事では...

Nginx 構成の場所の一致ルールの例の説明

nginx の設定命令のスコープは、main、server、location の 3 種類に分けられ...

Linux に MySQL 8.0.x をインストールするための完全な手順

マイグレーションMySQL 入門MySQL はもともとオープンソースのリレーショナル データベース管...

JavaScript ファクトリーパターンの説明

目次シンプルファクトリーファクトリーメソッド安全な工場方法アブストラクトファクトリー要約するシンプル...

Ubuntu 20.04 LTSの詳細なインストール履歴

この記事では、USB ブート ディスクの作成とシステムのインストールについて説明します。システム構成...

docker-compose でデプロイしたときに MySQL にアクセスできなくなる問題の簡単な分析

Docker-ComposeとはCompose プロジェクトは、以前の fig プロジェクトから派生...

Dockerコンテナの構築と実行のプロセスの詳細な説明

イメージをプルし、コンテナを作成してコンテナを実行するだけです。 docker run -d --r...

React.FCとReact.Componentの使用に関する簡単な説明

目次1. React.FC<> 2. クラスxxはReact.Componentを拡張し...

HTMLのposition属性の使い方(4種類)の詳しい説明

位置の 4 つのプロパティ値は次のとおりです。 1.相対的な2.絶対3.修正4.静的これら 4 つの...

Windows で MySQL 5.7.17 をインストールし、エンコードを utf8 に設定する方法

ダウンロードMySQL 公式ダウンロード、Windows (x86、64 ビット)、ZIP アーカイ...

Win10 構成 Tomcat 環境変数チュートリアル図

設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...

Alibaba Cloud SSHリモート接続がしばらくすると切断される問題を解決

問題の再現Alibaba Cloud Server は、Finalshell リモート接続を使用して...

Spring Boot + jar パッケージングのデプロイメント Tomcat 404 エラーの問題を解決する

1. Spring Boot は jsp jar パッケージをサポートしていません。jsp は wa...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

Linux システムによって報告される xfs_vm_releasepage 警告問題に対処する方法

問題の説明最近、いくつかのマシンで、一日のさまざまな時間に次の警告メッセージが表示されました。 3月...