MariaDBとDockerの最強タッグ!データベース環境をDockerで構築・運用する方法

2024-07-27

DockerでMariaDBを使う方法

手順

  1. MariaDBコンテナの作成 以下のコマンドを実行して、MariaDBコンテナを作成します。

    docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mariadb
    
    • --name mariadb: コンテナの名前をmariadbに設定
    • -e MYSQL_ROOT_PASSWORD=password: MariaDBのrootユーザーのパスワードをpasswordに設定
    • -p 3306:3306: コンテナ内の3306ポートをホストの3306ポートにマッピング
    • -d: バックグラウンドで実行
  2. docker exec -it mariadb mysql -u root -p
    
    • -it: コンテナ内でインタラクティブなシェルを実行
    • mariadb: コンテナの名前
    • mysql: MySQLクライアントを実行
    • -u root: ユーザー名をrootに設定
    • -p: パスワード入力を要求
  3. MariaDBの操作 MariaDBコンテナに接続したら、通常のMySQLコマンドを使用してMariaDBを操作できます。

    CREATE DATABASE mydatabase;
    USE mydatabase;
    CREATE TABLE mytable (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL
    );
    INSERT INTO mytable (name) VALUES ('John Doe');
    SELECT * FROM mytable;
    
  • データを永続的に保存するには、-vオプションを使用してホストのディレクトリをコンテナ内のディレクトリにマウントする必要があります。
  • 上記の手順は、MariaDB 10.11を使用しています。他のバージョンを使用する場合は、コマンドを適宜変更する必要があります。
  • 本番環境でMariaDBを使用する場合は、セキュリティ対策をしっかり行う必要があります。
  • 上記以外にも、Docker Composeなどを利用して、MariaDBと他のアプリケーションを一緒に起動する構成も可能です。



FROM mariadb:10.11

RUN sed -i 's/character-set-server=utf8mb4/character-set-server=utf8/g' /etc/mysql/my.cnf
RUN sed -i 's/collation-server=utf8mb4_unicode_ci/collation-server=utf8_general_ci/g' /etc/mysql/my.cnf

COPY ./init.sql /docker-entrypoint-initdb.d/

init.sql

CREATE DATABASE mydatabase;
USE mydatabase;

CREATE TABLE mytable (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL
);

INSERT INTO mytable (name) VALUES ('John Doe');

SELECT * FROM mytable;

docker-compose.yml

version: "3.8"

services:
  db:
    image: ./mariadb
    ports:
      - "3306:3306"
    volumes:
      - ./data:/var/lib/mysql

volumes:
  data:

使用方法

  1. Dockerfileinit.sqldocker-compose.ymlを同じディレクトリに保存します。
  2. 以下のコマンドを実行して、MariaDBコンテナを起動します。
    docker-compose up -d
    
  3. 以下のコマンドを実行して、MariaDBコンテナに接続します。
    docker exec -it db mysql -u root -p
    
  4. 以下のSQLを実行して、データベースとテーブルを作成します。
    CREATE DATABASE mydatabase;
    USE mydatabase;
    
    CREATE TABLE mytable (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL
    );
    
  5. 以下のSQLを実行して、データレコードを挿入します。
    INSERT INTO mytable (name) VALUES ('John Doe');
    
  6. 以下のSQLを実行して、データレコードをSELECTします。
    SELECT * FROM mytable;
    
  • docker-compose.yml
    • version: "3.8": Docker Composeのバージョンを3.8に設定します。
    • services:
    • volumes:
  • init.sql
    • CREATE DATABASE mydatabase;: mydbaseという名前のデータベースを作成します。
    • USE mydatabase;: mydbaseデータベースを使用します。
    • CREATE TABLE mytable ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL );: mytableという名前のテーブルを作成します。
    • INSERT INTO mytable (name) VALUES ('John Doe');: mytableテーブルにデータレコードを挿入します。
    • SELECT * FROM mytable;: mytableテーブルのすべてのデータレコードをSELECTします。
  • Dockerfile
    • FROM mariadb:10.11: MariaDB 10.11のイメージを使用します。
    • RUN sed -i 's/character-set-server=utf8mb4/character-set-server=utf8/g' /etc/mysql/my.cnf: デフォルトの文字エンコーディングをutf8に変更します。
    • RUN sed -i 's/collation-server=utf8mb4_unicode_ci/collation-server=utf8_general_ci/g' /etc/mysql/my.cnf: デフォルトの照合順序をutf8_general_ciに変更します。
    • COPY ./init.sql /docker-entrypoint-initdb.d/: 起動時にinit.sqlを実行します。



以下のコマンドを実行して、MariaDBコンテナを起動できます。

docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mariadb

このコマンドは、上記で紹介した方法と同じようにMariaDBコンテナを起動しますが、Dockerfiledocker-compose.ymlを使用する必要はありません。

イメージをpullして起動する方法

docker pull mariadb:10.11
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mariadb:10.11

このコマンドは、まずMariaDB 10.11イメージをpullし、その後そのイメージを使用してコンテナを起動します。

どちらの方法を選択するかは、あなたのニーズによって異なります。

  • 単一コマンドで起動する方法イメージをpullして起動する方法は、シンプルですが、構成自由度が低くなります。
  • Dockerfiledocker-compose.ymlを使用する方法は、より柔軟な構成が可能ですが、複雑です。
  • 上記以外にも、様々な方法DockerMariaDBを使用することができます。

docker mariadb



PBXTでMariaDBクエリのパフォーマンスを向上させる

この解説では、"MariaDB"と"PBXT"に関連する"MariaDB, PBXT and mysterious query results"というプログラミングについて、分かりやすく日本語で解説します。MariaDBMariaDBは、MySQL互換のオープンソースデータベース管理システム(DBMS)です。MySQLの創設者であるMichael Widenius氏によって開発されました。MariaDBは、MySQLよりも多くの機能と改善を提供しており、多くの企業や組織で使用されています。...


MariaDB on Windows で Web ブラウザを使用する

インストールダウンロードしたインストーラーを実行します。インストールウィザードに従って、インストールオプションを選択します。rootユーザーのパスワードを設定します。インストールを完了します。基本操作MariaDBのインストールが完了したら、コマンドラインツールmysqlを使用して、データベースを操作できます。...


【初心者向け】MariaDB init スクリプトの使い方:ステップバイステップガイド

MariaDB init スクリプトには、主に2種類あります。システム init スクリプト:オペレーティングシステムのパッケージマネージャーによってインストールおよび管理されます。サーバーの起動と停止を制御します。/etc/init. d などのディレクトリに配置されます。...


MariaDB on Windows - データベースエンジン起動エラーのトラブルシューティングガイド

MariaDB on Windowsでデータベースエンジンを起動しようとすると、エラーが発生する可能性があります。このエラーは、さまざまな原因によって発生する可能性があり、解決方法も原因によって異なります。原因エラーが発生する原因として、以下の例が挙げられます。...


MySQL データベース全権限付与解説

MySQLやMariaDBデータベースにおいて、特定のデータベースに対するすべての権限をユーザーに付与することを説明します。また、エラーコード「mysql-error-1142」についても触れます。MySQLでは、GRANTコマンドを使用してユーザーに権限を付与します。すべての権限を与えるには、以下のように記述します:...



SQL SQL SQL SQL Amazon で見る



MySQLエラー1153の対処法

MySQLエラー1153は、MySQL、MariaDB、MySQL ConnectorなどのMySQL関連のプログラミングにおいて、送信されたパケットがサーバーで設定された最大パケットサイズを超えた場合に発生します。このエラーメッセージは、通常以下のように表示されます。


オープンソースプロジェクトMariaDBへの貢献方法:スキルに合った貢献を見つけよう!

オープンソースプロジェクトへの参加は、スキルを磨いたり、新しいことを学んだり、他の開発者と交流したりするのに最適な方法です。しかし、自分に合ったプロジェクトを見つけるのは難しい場合があります。そこで、今回は、MariaDBプロジェクトに貢献したいけど、自分に合った貢献方法がわからないという人向けに、いくつかの提案を紹介します。


LOAD DATA INFILE vs INSERT INTO ... SELECT:大量データ挿入の比較

詳細:単一挿入 (Multiple Single INSERTs)デメリット: 処理速度が遅くなる可能性がある トランザクション処理に不向き処理速度が遅くなる可能性があるトランザクション処理に不向きメリット: エラー発生時の影響範囲が小さい 処理の進捗状況を逐一確認できる


MySQLデータベースからデータをローカルファイルに書き出す他の方法

SELECT * INTO OUTFILE LOCAL ? は、MySQLデータベースからデータをローカルファイルに書き出すためのSQLステートメントです。このステートメントは、SELECT ステートメントで指定されたデータを、指定されたローカルファイルにテキスト形式で書き出します。


エンタープライズ環境に最適! MariaDB Enterpriseの機能と導入事例

MariaDBは、GPLライセンスのもとで利用可能です。GPLライセンスは、ソフトウェアの利用、複製、再配布、改変を自由に許可するオープンソースライセンスです。商用利用する場合でも、GPLライセンスの条件を満たせば、無料でMariaDBを使用できます。しかし、商用利用では、以下のような課題があります。