ソースコードから MySQL 8.0.20 をコンパイルしてインストールする詳細なチュートリアル

ソースコードから MySQL 8.0.20 をコンパイルしてインストールする詳細なチュートリアル

前回の記事では、次のことを紹介しました。

MySQL8.0.20 インストール チュートリアルとインストールの問題に関する詳細なチュートリアル https://www.jb51.net/article/186202.htm

MySQL8.0.20 のダウンロードとインストール、および発生した問題 (画像とテキスト付き) https://www.jb51.net/article/186208.htm

CentOS7にMysql8.0.20をインストールする手順:

8.0 リリースノート

1 概要

この記事では主に、ソース コードから MySQL Community Edition 8.0.20 をコンパイルしてインストールする方法について説明します。まず、コンパイルとインストールに関する知識を紹介し、その後コンパイルとインストールを開始します。

2 ソースコードのコンパイルとインストールに関する知識

2.1 作成と構成

make は、現在のディレクトリで Makefile ファイルを検索するコンパイル コマンドです。Makefile ファイルには、ソース コードをコンパイルする方法に関する詳細な情報が記録されます。 Configure は、ソフトウェア開発者が作成した検出プログラムであり、ユーザーの開発環境を検出し、検出が完了した後に Makefile ファイルを生成します。通常、configure は次のものを検出します。

  • 適切なコンパイラはありますか?
  • 必要な関数ライブラリやその他の依存関係があるかどうか
  • このシステムと互換性がありますか?
  • カーネル ヘッダー ファイルは存在しますか?

2.2 tarball ファイル

Tarball ファイルは、実際には tar を使用してソース コードを圧縮したファイルです。圧縮にはgzipが一般的に使用され、拡張子は.tar.gzまたは.tgzとなります。ただし、bzip2やxzなどの技術はgzipよりも圧縮効果が高いため、ファイル名と拡張子も.tar.bz2または.tar.xzとなります。通常、Tarball ファイルには次のものが含まれます。

  • ソースコード
  • 検出ファイル (configure/config)
  • 手順 (README/INSTALL)

2.3 ソースコードから関連コンポーネントをコンパイルしてインストールする

2.3.1 コンパイラ

コンパイル操作を実行するにはコンパイラ (通常は gcc) が必要です。

2.3.2 自動構成の作成

コンパイル プロセスを簡素化するために、Tarball 形式でリリースされるソフトウェアでは通常、ターゲット ファイルの依存関係に従ってコンパイルするために make が必要です。ただし、make には Makefile が必要なので、Makefile を生成するには autoconfig が必要です。

2.3.3 関数ライブラリ

カーネルによって提供されるライブラリと関連するインクルード ファイルが必要です。

2.4 静的ライブラリと動的ライブラリ

関数ライブラリは動的ライブラリと静的ライブラリの 2 種類に分かれており、そのほとんどは /lib と /lib64 に配置されます。

2.4.1 静的ライブラリ

拡張子は .a で、コンパイル時に実行可能プログラムに直接統合されるため、静的ライブラリを使用して生成されるファイルは大きくなります。コンパイルされた実行可能ファイルは、外部関数ライブラリに依存せずに直接実行できます。また、プログラムに直接統合されているためアップグレードが難しく、静的ライブラリをアップグレードする場合は再コンパイルする必要があります。

2.4.2 動的ライブラリ

拡張子は .so です。静的ライブラリとは異なり、動的ライブラリはコンパイル時にプログラム内にポインターのみを持ちます。実行可能プログラムが関数ライブラリの関数を使用する必要がある場合、関数ライブラリを読み込んで使用します。生成される実行可能ファイルは小さくなりますが、コンパイルされたプログラムを単独で実行することはできません。さらに、実行可能ファイルが新しい関数ライブラリ ファイルを直接ポイントするため、アップグレードはより便利になり、再コンパイルも必要ありません。

2.5 コンパイルとインストールの一般的な手順

  • (1)ソースコードを入手する:通常はwgetやcurlを使用するか、ブラウザからダウンロードします。
  • (2)ヘルプファイルの表示:解凍後、INSTALLやREADMEなどのファイルの関連内容を表示します。
  • (3)依存関係のインストール:公式サイトのドキュメントまたは前の手順で取得した情報に従って依存関係をインストールします。
  • (4)Makefileの生成:通常、configure/configを使用して、構成、動作環境の検出、インストール場所の指定、対応する機能のオン/オフ、関連ライブラリの場所の指定、依存関係の決定などを行います。通常、–helpを使用してオプションのヘルプを取得し、対応するオプションを指定してから、構成してMakefileを生成する必要があります。
  • (5)コンパイル:実際のコンパイル手順は、単純なmakeコマンドで、ヘッダーファイルのプリコンパイル、前処理、コンパイル、リンクの手順が含まれます。
  • (6) インストール: make install。このステップでは、実際にはインストールとオペレーティングシステムの接続という2つのステップが実行されます。

上記の手順は順番に実行されており、前の手順が失敗した場合は次のステップを実行できないことに注意してください。つまり、次のステップを実行する前に、前の手順が正常に実行されている必要があります。上記の 6 つの手順を完了したら、コンパイルしてインストールできます。通常は、実行可能ファイルのパスを PATH に追加したり、ヘッダー ファイルとライブラリ ファイルを /usr/include と /etc/ld.so.conf.d に追加したり、オンライン ヘルプ ファイルを /etc/man_db.conf に追加したりするなどの後続処理が必要です。

2.6 コンパイルとインストール前の心理的準備

これが最後のヒントです。インストール前に、Ctrl + W を押してこのページを閉じると、数え切れないほどの苦労を回避できます。
コンパイルとインストールで最もよくある問題は、バージョンと依存関係の問題です。バージョンの問題は扱いやすく、パッケージ マネージャーまたは手動でアップグレードできます。依存関係の問題については、パッケージ マネージャーを使用してインストールするのは簡単ですが、特定の依存関係の下ではいくつの依存関係をインストールする必要があるかわからないため、コンパイルとインストールは非常に面倒です。
したがって、MySQL や Workbench などの大規模なソフトウェアを正常にコンパイルしてインストールするには、十分な時間を用意し、無数の問題を解決するための十分な忍耐力が必要です。
さっそく始めましょう。

3 MySQLをインストールする

3.1 インストールの依存関係

MySQL に必要な依存関係は次のとおりです。

  • メイク
  • make(3.75以上を推奨)
  • コンパイラ (GCC 5.3+ または Clang 4.0+ または XCode 9+ または Developer Studio 12.6+ または Visual Studio 2017)
  • SSL ライブラリ (デフォルトではシステムの OpenSSL を使用します)
  • Boost C++ ライブラリ。ビルドには必要ですが、使用には必要ありません。インストールは不要で、ソース コードだけで十分です。
  • ncurses ライブラリ
  • バイソン2.1以上
  • ギット

3.2 パッケージマネージャーのインストール

私の Debian システムでは、apt を使用できます。

sudo apt-get install -y バイソン
 git ホスト名 
libncurses-dev 
libssl-dev 作成 
openssl パッケージ構成 
doxygen cmake メイク

RedHat8.x:

sudo yum install -y bison bzip2 git ホスト名 ncurses-devel 
openssl openssl-devel pkgconfig tar wget zlib-devel 
doxygen diffutils rpcgen make libtirpc-devel cmake gcc

RedHat7.x:

sudo yum install -y bison bzip2 git ホスト名 ncurses-devel 
openssl openssl-devel 
pkgconfig tar wget zlib-devel 
doxygen cmake gcc

その他は自分で検索できます。

3.2 コンパイルとインストール

パッケージ マネージャーを使用してインストールしたくない場合は、コンパイルしてインストールする方法を使用できます。
ぜひご参加ください。

3.2.1 cmakeをインストールする

tar -zxvf cmake-3.17.2.tar.gz
cmake-3.17.2 をインストールします
./bootstrap --prefix=/usr/local/cmake
きれいにする 
make -j 6 #6はCPUコアの数です。カスタム変更です。失敗した場合はmakeを使用してください。
テストする
sudo インストール

3.2.2 makeをインストールする

コンパイラがなければ、コンパイルしてインストールすることはできません。ソフトウェア パッケージを使用してインストールできます。私の Debian システムでは、apt を直接使用します。

sudo apt をインストールします

3.2.3 gccのインストール

tar -xvf gcc-9.3.0.tar.xz
gcc-9.3.0 をインストールします
./contrib/ダウンロードの前提条件
mkdir ビルド
CDビルド
../configure --prefix=/usr/local/gcc -enable-checking=release -disable-multilib 
きれいにする 
メイク -j 6
テストする
sudo インストール
sudo ln -sv /usr/local/gcc/include /usr/include/gcc
#/etc/ld.so.conf.d/gcc.confに次の内容を追加します/usr/local/gcc/lib
ローカル

3.2.4 opensslをインストールする

tar -zxvf openssl-1.1.1g.tar.gz
openssl-1.1.1gをインストールしてください
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/ssl
#prefixはインストール場所です。デフォルトは/usr/localです
#openssldirは設定ファイルの場所です。証明書とキーペアも保存されます。 
メイク -j 6
テストする
sudo インストール
sudo ln -sv /usr/local/openssl/include /usr/include/openssl
#/etc/ld.so.conf.d/openssl.conf および以下の内容 /usr/local/openssl/lib

3.2.5 ダウンロードブースト

公式サイトはこちら。
必要なバージョンは 1.70.0 です。最新バージョンは 1.73.0 です。理論的には、より新しいバージョンが利用可能になるはずです。ここでダウンロードしたバージョンは 1.70.0 です。 boost ライブラリを手動でダウンロードしない場合は、cmake を使用してダウンロード用の Makefile を生成するときに、DDOWNLOAD_BOOST を 1 に設定できます。

ここに画像の説明を挿入

ダウンロードしたら解凍するだけです。

tar -xvf boost_1_70_0.tar.bz2

3.2.6 ncursesのインストール

tar -zxvf ncurses-6.2.tar.gz
ncurses-6.2 をインストールします
./configure --prefix=/usr/local/ncurses
メイク -j 6
sudo インストール

sudo ln -sv /usr/local/ncurses/include /usr/include/ncurses
#/etc/ld.so.conf.d/ncurses.conf を /usr/local/ncurses/lib に追加します

3.2.7 バイソンのインストール

tar -xvf bison-3.4.tar.xz
cd バイソン 3.4
./configure --prefix=/usr/local/bison
メイク -j 6
sudo インストール
#/etc/ld.so.conf.d/bison.conf を /usr/local/bison/lib に追加します

3.2.8 gitをインストールする

tar -xvf git-2.26.2.tar.xz
git-2.26.2をインストールします
./configure --prefix=/usr/local/git \
--with-openssl=/usr/local/openssl \
--with-libpcre2=/usr/local/pcre2 \
--with-curl=/usr/local/curl \
--with-expat=/usr/local/expat \
--with-iconv=/usr/local/iconv \
--with-editor=/usr/bin/vim \
--with-zlib=/usr/local/zlib \
--with-tcltk=/usr/local/tcl
すべてのドキュメント情報を作成する
sudo make install インストールドキュメント インストールHTML インストール情報

3.2.9 その後の処理

PATH を変更します:

# export PATH=$PATH:\ を ~/.bash_profile または ~/.bashrc に追加します
/usr/local/cmake/bin:\
/usr/local/gcc/bin:\
ローカルディレクトリ
/usr/local/bison/bin:\
/usr/local/ncurses/bin:\
git の bin ディレクトリに、

動的ライブラリを有効にします。

ldconfig

十分な権限がない場合は、sudo を追加します。

3.3 MySQLコミュニティエディションをダウンロードする

公式サイトはこちら。

ここに画像の説明を挿入

両方試してみましたが、正常にコンパイルおよびインストールできたため、最初のものと 2 番目のものの違いはわかりません。 2 番目には Boost ヘッダーがあると書かれていますが、役に立たないようです。ここでは最初のものが使用されます。
検証(オプション):

md5sum mysql-boost-8.0.20.tar.gz 

ここに画像の説明を挿入

3.4 Makefileを生成する

sudo cmake ..\
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #
-DENABLED_LOCAL_INFILE=オン\
-DWITH_SSL=システム\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=~/デスクトップ/ブースト
  • DDEFAULT_CHARSET: デフォルトの文字セットを utf8mb4 として指定します。歴史的な問題により、MySQL の utf8 は実際の utf8 ではなく、最大長が 3 バイトしかない縮小版です。4 バイトの utf8 エンコーディングに遭遇すると、ストレージ例外が発生します。 5.5.3 以降では、完全な utf8 は utf8mb4 を使用して実装されています。
  • DDEFAULT_COLLATION: ソート規則。デフォルトは utf8mb4_0900_ai_ci で、これは utf8mb4_unicode_ci の一種です。 0900 は Unicode 校正アルゴリズムのバージョンを示し、ai はアクセントを区別しない (as は区別する)、ci は大文字と小文字を区別しない (cs は大文字と小文字を区別する) を示します。 utf8mb4_unicode_ci は、標準 Unicode に基づくソートと比較を意味し、さまざまな言語間で正確にソートできます。utf8mb4_general_ci が特定の特殊文字セットに遭遇すると、ソート結果に一貫性がなくなり、精度が低下する可能性がありますが、パフォーマンスは向上し、比較とソートは高速になります。
  • DENABLED_LOCAL_INFILE は、ロード データ コマンドを使用できるかどうかを示します。
  • DWITH_SSL はシステムの SSL ライブラリを使用することを意味します。システムの SSL ライブラリを使用しない場合は、パスをカスタマイズしてください。
  • DCMAKE_INSTALL_PREFIX: MySQL インストール ディレクトリ。
  • DMYSQL_DATADIR: MySQL データ ディレクトリ。最初は空です。
  • DMYSQL_TCP_PORT: ポート、デフォルトは 3306。
  • DDOWNLOAD_BOOST: Boost ライブラリをダウンロードするかどうかを示す値は 0 または 1 です。
  • DWITH_BOOST: Boost ライブラリをダウンロードしない場合は、ローカル Boost ライブラリの場所です。Boost をダウンロードする場合は、ダウンロード場所を示します。

その他のパラメータについては、

sudo cmake .. -LH

チェック。

3.5 コンパイルとインストール

sudo メイク

または

sudo メイク -jn

作者は make -j 6 を試しましたが失敗したため、make に切り替えるしかありませんでした。
make と make -j の速度の間にはまだ大きな差があります。
コンパイル後、テストすることをお勧めします。

テストする

次にインストールします:

sudo インストール

3.6 その後の構成

3.6.1 ユーザーグループとユーザー

新しいユーザー グループとユーザーを作成し、ユーザー データ ディレクトリの権限を変更します。

sudo グループ追加 mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo chown mysql:mysql /usr/local/mysql/data
sudo chmod 750 /usr/local/mysql/data

必要に応じてデータ ディレクトリを変更します。後で書き込み不可エラーが発生する場合は、権限を 777 に変更します。

3.6.2 設定ファイル

設定ファイルはmy.cnfで、次の場所に配置できます。

/等/
/etc/mysql/
インストールディレクトリ /etc/
~/

次に、読む順序は上から下です。著者がインストールした後、デフォルトはグローバル設定である /etc/mysql/my.cnf で、~/.my.cnf はユーザー固有の設定です。ここでは、/etc/mysql/my.cnf を直接変更します。

[クライアント-サーバー]

# 設定ディレクトリからすべての.cnfファイルをインポートします
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

[mysqld]
ポート=3306
ベースディレクトリ=/usr/local/mysql/server
データディレクトリ=/usr/local/mysql/data
文字セットサーバー=utf8mb4
[mysql]
デフォルトの文字セット=utf8mb4
[クライアント]
ポート=3306
デフォルトの文字セット=utf8mb4

[mysqld]以下のフィールドが新しく追加され、データディレクトリを自分で変更できるようになりました。
MySQL の utf8 は utf8mb3 を参照するため、文字セットを utf8mb4 に変更することをお勧めします。utf8 エンコードでサポートされる最大文字長は 3 バイトです。4 バイト幅の文字が検出されると、挿入例外が発生します。 3 バイトの utf8 でエンコードできる最大の Unicode 文字は、基本多言語面である 0xffffff です。絵文字や多くの珍しい中国語の文字は保存できません。ただし、utf8mb4 は 5.5.3 以降でのみサポートされます。互換性の理由から、utf8mb4 を統一的に使用する必要があります。

3.7 初期化

環境変数を変更します。

#.bashrc または .bash_profile に加えて、エクスポート PATH=$PATH:/usr/local/mysql/server/bin

使用

mysqld --initialize --user=mysql

または

mysqld --initialize-insecure --user=mysql

次に、SSL と RSA サポートを有効にします (オプション)。

mysql_ssl_rsa_セットアップ

最後にサービスを開始します。

mysqld_safe --user=mysql &

3.8 パスワードの変更

安全でない初期化を使用している場合は、root としてログインします。

mysql -u --パスワードをスキップ

初期化を使用して初期化します。

mysql -u ルート -p

初期化時に表示されるパスワードを入力するだけです。
次にパスワードを変更します。

'xxx' で識別されるユーザー root@localhost を変更します。

3.9 テスト

組み込みの mysqlshow と mysqladmin を使用します。

mysqladmin -u ルート -p バージョンmysqlshow -u ルート -p 

ここに画像の説明を挿入

3.10 仕上げ作業

3.10.1 エイリアス

エイリアス md='mysqld -u mysql &'

このように、md と入力して MySQL サービスを開始できます。

3.10.2 Mycliをインストールする

Mycli は、自動補完と構文の強調表示機能を備えた MySQL コマンドライン クライアント ツールです。
pipを使用してインストールします。Python2の場合は

pip インストール mycli

Python 3の場合は

pip3 インストール mycli

pip が見つかりません。インストールしてください:

sudo apt install python-pip#python2
sudo apt で python3-pip をインストールします

次に、mycli を使用してデータベースに入ります。

mycli -u ルート

完成おめでとうございます!

4 参考文献

1. Linux で MySQL をインストールする方法 (YUM とソース コードのコンパイル)
2.utf8 と utf8mb4、utf8mb4_unicode_ci と utf8mb4_general_ci
3.MySQL公式サイトのインストールドキュメント

要約する

これで、ソースコードから MySQL 8.0.20 をコンパイルしてインストールする詳細なチュートリアルに関するこの記事は終了です。ソースコードから MySQL 8.0.20 をコンパイルしてインストールする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 8.0 の新機能の分析 - トランザクション データ ディクショナリとアトミック DDL
  • MySQL 8.0 ディクショナリテーブル拡張の詳細な説明
  • mysql8.0.21 のダウンロードとインストールに関する詳細なチュートリアル
  • MySQL 8.0.21.0 コミュニティ エディションのインストール チュートリアル (詳細な図解)
  • Alibaba Cloud CentOS 7 に MySQL 8.0.13 をインストールする方法
  • MySQL 8.0.20でNavicatをインストールして接続する方法と注意すべき点
  • CentOS 7 に MySQL 8.0.20 データベースをインストールするための詳細なチュートリアル
  • mysql8.0.20 のダウンロードとインストールおよび発生した問題 (図とテキスト)
  • MySQL 8.0.20 インストールチュートリアルとインストールに関する問題に関する詳細なチュートリアル
  • CentOS8 デプロイメント LNMP 環境で mysql8.0.29 をコンパイルしてインストールする方法の詳細なチュートリアル
  • MySQL 8.0 で列を素早く追加する方法

<<:  JavaScript の重要なブレークポイント デバッグ手法の概要 (推奨)

>>:  js の関数の長さはどれくらいですか?

推薦する

Vue で AES.js を使用する詳細な手順

AES暗号化の使用データ転送の暗号化と復号化処理 --- AES.js最初のステップ: vue に ...

Linux Zabbixカスタム監視およびアラーム実装プロセスの分析

ターゲットzabbix フロントエンド監視の iostat コマンドでデータの 1 つを表示します。...

JSの高階関数5つを共有する

目次1. はじめに2. 再帰3. コールバック関数3.1 匿名コールバック関数3.2 パラメータ付き...

MySql の忘れたパスワードの変更方法はバージョン 5.7 以上に適しています

1. まずmysqld.exeプロセスを停止します2. cmd を開き、mysql の bin ディ...

ネイティブ JS 音楽プレーヤー

この記事の例では、音楽プレーヤーを実装するためのJSの具体的なコードを参考までに共有しています。具体...

HTML でランダムロールコーラーを実装するためのサンプルコード

この点呼装置は簡易版であり、自動停止の必要性を考慮していないため、点呼を開始した後、停止ボタンをクリ...

Dockerコンテナが停止できない問題の解決方法

解決策は次のとおりです。 1. コンテナを強制削除する docker rm -f ジェンキンス2. ...

なぜ IE6 が最も多くの人に使用されているのでしょうか?

まず第一に、私はウェブデザイナーです。具体的には、私は XHTML フロントエンド デザイナーです。...

WeChatアプレットAmapマルチポイントルート計画プロセス例の詳細な説明

電話Amap API を呼び出す方法は? Amap が https://lbs.amap.com/a...

MYSQL トランザクション チュートリアル Yii2.0 マーチャント引き出し機能

序文私はプログラマーとしてスタートした PHP プログラマーです。これまで、トレーニング コースで勉...

HTML入力で値が変更されたときにリスナーイベントを追加することの簡単な分析

達成される効果多くの場合、入力ボックスの値の変化をリアルタイムで監視し、ブラウザを誘導してウェブサイ...

JS関数の呼び出し、適用、バインドの超詳細な方法

目次JS 関数呼び出し、適用、バインドメソッド1. call() メソッド1. call() メソッ...

Mysqlマスタースレーブ同期の実装原理

1. MySQL マスター/スレーブ同期とは何ですか?マスター データベースのデータが変更されると、...

SQL 文で OR と AND を混在させる場合のヒント

現在、このような要件があります。ログインした人がカスタマー サービス担当者である場合、注文は「このカ...