8.3------Docker配備アプリケーション-Mysql 8.0


10.1 Docker配備アプリケーション-Mysql 8.0
推奨Mysql 8.0、それは更に多くの新しい特性を持って、例えばNO SQLを支持して、原生の分布式、UTF 8-mb 4を支持して、myisamを取り消しました.最も重要なのは性能の大幅な向上である.
インストール環境
Linuxシステム:Ubuntu 16.04 dockerバージョン:18.09.5 mysqlバージョン:8.0.16
配置の考え方
  • OSはrootユーザに切り替わりdocker
  • を起動する.
    $ su root
    $ docker pull mysql:8.0.16
    
  • mysql 8.0ミラー
  • を引く
    docker pull mysql:8.0.16
    
    root@instance-o70no2nw:~# su root
    root@instance-o70no2nw:~# docker pull mysql:8.0.16
    latest: Pulling from library/mysql
    27833a3ba0a5: Pull complete 
    864c283b3c4b: Pull complete 
    cea281b2278b: Pull complete 
    Digest: sha256:f5f78fe2054b4686da3fddb460eab0b53d04e067c977d6a02fcb5ec25375ed15
    Status: Downloaded newer image for mysql:8.0.16
    
  • コンテナの作成と起動(重要)
  • 考え方:Mysqlが利用可能で、以下の点を保証する必要があります.
  • ポートオープン:3306対外オープン->マッピングが必要なポート
  • データ永続化:プロファイル、ストレージ情報の消失なし->ローカルボリュームをマウントする必要がある
  • 中国語対応:符号化パラメータの設定->パラメータの設定
  • 初期化ROOTパスワード:-e MYSQL_ROOT_PASSWORD=root
  • 無停止:restart=always
  • デーモン運転:-d
  • 以上の考え方に基づいて、Mysqlコンテナ作成コマンドは以下の通りです.
    $ docker run \
    --name mysql \
    --restart=always \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=root \
    -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d \
    -v /usr/local/docker/mysql/logs:/var/log/mysql \
    -v /usr/local/docker/mysql/data:/var/lib/mysql \
    -d mysql:8.0.16 \
    --character-set-server=utf8mb4 \
    --collation-server=utf8mb4_unicode_ci
    

    これで終わりです
    テクニック
    コンテナのファイルをホストにコピーする方法
    理由:Mysqlコンテナを作成する場合、ホストディレクトリをコンテナ構成ディレクトリにマウントします.-v/usr/local/docker/mysql/conf:/etc/mysql/conf.dこれはいくつかの問題を引き起こします.ホストディレクトリが空であるため、コンテナの元の構成情報も空にされ、Mysqlコンテナのconf.d/mysqlをどのようにするかという問題が生じる.cnfコピー
    ターゲット:コンテナ内のファイルをホストにコピーする考え方:一時Mysqlコンテナを作成する->ホストボリュームにコンテナのプロファイルをコピーする->一時コンテナを破棄する->Mysqlコンテナ作成コマンドを再実行する
    操作
  • ホストのマウントボリュームディレクトリ/usr/local/docker/mysql/conf
  • にアクセス
  • コピーコマンド:docker cp mysql:/etc/mysql.

  • ただし、Mysql 8については.0、必要ない、必要ない、必要ない、
    なぜならcnfは空です...具体的な検証は以下の通りです.
  • まず一時MYSQL容器を起動し、
  • に入る.
    $ docker run -it --rm mysql:8.0.16 bash
    
  • /etc/mysql/my.cnf
  • root@200a86d29e7c:/etc/mysql# cat my.cnf
    # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; version 2 of the License.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
    
    #
    # The MySQL  Server configuration file.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
    
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    secure-file-priv= NULL
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    # Custom config should go here
    !includedir /etc/mysql/conf.d/
    
    
  • /etc/mysql/conf.d/mysql.cnf
  • root@200a86d29e7c:/etc/mysql/conf.d# ls
    docker.cnf  mysql.cnf
    root@200a86d29e7c:/etc/mysql/conf.d# cat mysql.cnf 
    # Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License, version 2.0,
    # as published by the Free Software Foundation.
    #
    # This program is also distributed with certain software (including
    # but not limited to OpenSSL) that is licensed under separate terms,
    # as designated in a particular file or component or in included license
    # documentation.  The authors of MySQL hereby grant you an additional
    # permission to link the program and your derivative works with the
    # separately licensed software that they have included with MySQL.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License, version 2.0, for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
    
    #
    # The MySQL  Client configuration file.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
    
    [mysql]
    root@200a86d29e7c:/etc/mysql/conf.d# 
    
    

    その他の資料
  • 公式ガイド:Docker Hub for Mysql
  • mysql 8:クライアント接続caching-sha 2-password問題
  • mysql 8をインストールするときにパスワード暗号化を選択し、その後navicateなどのクライアント接続を使用すると、caching-sha 2-passwordへの接続をクライアントに提示します.クライアントがこのプラグインをサポートしていないため、以下のように変更できます.
     #        
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 
    #    (mysql_native_password  )    
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{NewPassword}';