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

推薦する

ハイパーリンクを表示して開く方法

<br />インターネット上の無数の情報は基本的に HTML ドキュメントで構成されてお...

CocosCreator でカメラトラッキングに cc.follow を使用する方法

Cocos Creator バージョン: 2.3.4デモのダウンロード: https://files...

CentOS のクローン作成、Linux 仮想マシンの共有の完全な手順

序文Linux が完全にセットアップされると、クローン機能を使用して短時間で複数の Linux を作...

JavaScript セレクター関数 querySelector および querySelectorAll

目次1. querySelectorは単一の要素を照会する1. ドキュメントインスタンスの呼び出し2...

MySQL シリーズ 6 のユーザーと認証

目次チュートリアルシリーズ1. ユーザー管理1. ユーザーアカウント2. アカウントの追加と削除3....

src 属性と href 属性の違い

src と href には違いがあり、混同される可能性があります。 src は現在の要素を置き換える...

OpenSSL を使用した Kubernetes 証明書の生成の概要

Kubernetes は、基本認証、トークン認証、CA 認証の 3 種類の認証をサポートしています。...

ドロップダウンリスト選択ボックスを実装するJavaScript

この記事の例では、ドロップダウンリスト選択ボックスを実装するためのJavaScriptの具体的なコー...

IDEA の Maven プロジェクトで MySQL 8.0 に接続して使用する方法に関するチュートリアル

まず、私の基本的な開発環境を見てみましょう。オペレーティングシステム: MacOS 10.13.5 ...

MySQL テーブルスペースの断片化の概念と関連する問題の解決策

目次背景表領域の断片化とは何ですか?表領域の断片化を確認する方法表スペースの断片化問題を解決する方法...

Jsモジュール化の動作原理とソリューションの詳細な説明

目次1. モジュラーコンセプト2. モジュール化3. モジュール化プロセス1. 通常の記述(グローバ...

Dockerfileを使用してDockerイメージを構築する手順

Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の...

インデックスは MySQL クエリ条件で使用されますか?

雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...

CocosCreator の新しいリソース管理システムの分析

目次1. 資源と建設1.1 クリエイターリソースファイルの基本1.2 リソースの構築2. アセットバ...

星のフラッシュ効果を実現するjs

この記事の例では、スターフラッシュ効果を実現するためのjsの具体的なコードを参考までに共有しています...