序文 Ahhang が Springboot プロジェクトを開発していたとき、フロントエンドから検証コードが常に無効であると通知されました。ローカル テストでは問題はありませんでしたが、リモート サーバーのデータベース時間を確認すると、なんと 8 時間も早まっていました。明らかに、これは MySQL のタイム ゾーンの問題でした。この記事では、Docker で MySQL コンテナのタイム ゾーンを変更する方法を説明します。 解決 まず、データベースのタイムゾーンが本当に間違っているかどうかを確認しましょう。MySQL データベースに入り、次のステートメントを実行します。 今すぐ選択(); 次のようなデータが返されます: mysql> NOW() を選択してください。 +---------------------+ | 今() | +---------------------+ | 2020-07-04 15:46:46 | +---------------------+ セット内の1行(0.09秒) 現在のタイムゾーンを確認するには、次のコマンドを入力します。 '%time_zone%' のような変数を表示します。 次のようなデータが返されます: mysql> '%time_zone%' のような変数を表示します。 +------------------+--------+ | 変数名 | 値 | +------------------+--------+ | システムタイムゾーン | UTC | | タイムゾーン | +00:00 | +------------------+--------+ セット2行(0.12秒) 返された時間があなたの時間と数時間異なり、タイムゾーンが正しくない場合(+08:00 ではない場合)、下を見る必要があることを意味します。 方法1: 一時的な変更 緊急に必要になった場合は、この一時的な変更を行うことができます。次のコマンドを実行します。 グローバルタイムゾーンを '+8:00' に設定します。 次のコマンドを再度実行して、返された結果が現在の時刻であることを確認します。 今すぐ選択(); 現在の時刻を返すことで、変更が成功したことが証明されます。 この方法が「一時的な変更」と呼ばれる理由は、MySQL を再起動すると変更が無効になるためです。 方法2: 起動時にパラメータを追加する この方法は、MySQL コンテナを再作成できる条件に適用されます。 コンテナを作成するときに、タイムゾーンを指定するコマンドを追加する必要があります (東部標準時ゾーン 8 は上海ですが、必要に応じて独自のタイムゾーンに変更できます)。 -e TZ=アジア/上海 したがって、完全な docker run コマンドは次のようになります (参考用であり、実際の実行コマンドは若干異なる場合があります)。 docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -e TZ=Asia/Shanghai -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0 各パラメータの目的を確認するには、私の記事「Docker で MySQL をインストールする」をご覧ください。 方法3: コンテナ内の構成を変更する 次のように入力して、mysql コンテナに入ります。 docker exec -it コンテナID bash MySQL 構成ファイルを変更します (2 つのケース): テキストエディタで /etc/mysql/mysql.conf.d を開きます。 または テキストエディタで /etc/mysql/my.cnf を開きます。 上記のコマンドで bash: vim: command not found が返される場合は、まず Docker コンテナに vim コマンドがない場合の解決策をお読みください。 設定ファイルを入力したら、i をクリックして編集モードに入り、設定ファイルの行を追加します。 デフォルトのタイムゾーン = '+08:00' 図示のとおり: プロフィールを追加する 完了したら、ESC キーを押して :wq と入力し、保存して終了します。 次に、exit と入力して Docker コンテナを終了します。 次に、mysql コンテナを再起動する必要があります。次のコマンドを入力します。 docker コンテナ ID を再起動 これまでのところ、タイムゾーン構成は正常に変更されました。 再起動後、次のコマンドを入力して成功を確認します。 今すぐ選択(); 返された時刻が現在の時刻と一致する場合、変更は成功します。 結論 お急ぎの場合は方法1を、お急ぎでない場合は方法2をおすすめします。ご都合に合わせてお選びください。 Docker の MySQL コンテナのタイムゾーン問題を修正する方法についての記事はこれで終わりです。Docker の MySQL コンテナのタイムゾーンの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Linux でリモートから MySQL を自動的にバックアップする方法
私はずっとDockerにはIPアドレスがないと思っていました。実はDockerのネットワークテンプレ...
ブログの正式名称は「Web log」で、中国語で「ネットワークログ」を意味します。後にブログに短縮さ...
[LeetCode] 182.重複メールPerson という名前のテーブル内のすべての重複メールを...
「nofollow」タグは数年前に Google、Yahoo、Microsoft によって提案されま...
この記事の例では、チャットインターフェースの表示を実現するためのVueの具体的なコードを参考までに共...
1. ソフトウェアのインストールパスを確認します。 Linuxソフトウェアをインストールできる場所は...
目次関連する依存関係のインストールドッカーDockerでJenkinsをインストールするDocker...
CUDA インストール cuda をダウンロードサポートされているcudaバージョンを表示するには...
目次1 Apacheの役割2 Apacheのインストール3. Apacheを有効にする4 Apach...
1. 背景1. vSphere の共有ストレージの背景を簡単に紹介するvSphere の重要な機能は...
目次Vue ファースト スクリーン パフォーマンス最適化コンポーネント説明するインターセクションオブ...
Linuxにフラッシュをインストールする方法1. Flashの公式サイトにアクセスし、ダウンロードを...
目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...
XML価格照会のクエリデータにはリストが含まれているため、コレクションが必要です <結果マップ...
Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮想...