ソースコードから[MySQL](https://cloud.tencent.com/product/cdb?from=10680)をインストールすることを選択します。MySQLやその他のインストール方法についてある程度理解している必要があります。ここでは、周囲の情報についてはあまり詳しく説明しません。開始するだけです。
MySQLをコンパイルすると、より多くのメモリが消費されます。マシンのメモリが小さい場合、コンパイル中にメモリ不足の例外が発生する可能性があります。スワップパーティションが設定されていない場合は、スワップパーティションを設定して解決できます。設定されていない場合は、メモリを拡張することしかできません。
[ root@txy-server ~]# dd if=/dev/zero of=/swapfile bs=1k count=2048000[root@txy-server ~]# mkswap /swapfile
[ root@txy-server ~]# swapon /swapfile
**1.1、**yumコマンドを使用して、コンパイルが依存するパッケージとツールをインストールします。
[ root@txy-server ~]# yum install -y cmake3 git gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel bzip2 openssl-devel libtirpc-devel.x86_64
MySQLのgccバージョン要件は5.3以上であるため、yumの最新バージョンは4.8.5しかないため、最初にgccバージョンをアップグレードする必要があります。
gccバージョンをアップグレードする主な方法は2つあります。1つはソースパッケージをダウンロードしてコンパイルおよびインストールする方法、もう1つはyumを使用してdevtoolsetパッケージをインストールする方法です。devtoolsetパッケージの現在のgccバージョンは5.3.1です。
ソースコードのインストール方法はより柔軟で、任意のバージョンを選択できますが、非常に時間がかかります。ここでは両方の方法を紹介しますので、状況に応じてお選びいただけます。
**1.1.1、**yumを使用してdevtoolsetパッケージをインストールします。コマンドは次のとおりです。
[ root@txy-server ~]# yum install -y centos-release-scl scl-utils-build
[ root@txy-server ~]# yum install -y devtoolset-4-gcc.x86_64 devtoolset-4-gcc-c++.x86_64 devtoolset-4-gcc-gdb-plugin.x86_64
**1.1.2、**ソフトウェアリンクを作成し、 / usr / bin
の下のgcc関連コマンドをオーバーライドします。これは、MySQLをコンパイルするときに、デフォルトで / usr / bin
ディレクトリにgcc関連コマンドが見つかるためです。
[ root@txy-server ~]# ln -sf /opt/rh/devtoolset-4/root/usr/bin/* /usr/bin/
**1.1.3、**最後に、gcc、cc、c ++などのコマンドのバージョンが5.3.1であることを確認します。
[ root@txy-server ~]# gcc -v
...
gcc version 5.3.120160406(Red Hat 5.3.1-6)(GCC)[root@txy-server ~]# cc -v
...
gcc version 5.3.120160406(Red Hat 5.3.1-6)(GCC)[root@txy-server ~]# c++-v
...
gcc version 5.3.120160406(Red Hat 5.3.1-6)(GCC)
1.2.1、以下はソースインストールの方法です。最初にGCCソースインストールパッケージをダウンロードして解凍します。
[ root@txy-server ~]# cd /usr/local/src
[ root@txy-server /usr/local/src]# wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
[ root@txy-server /usr/local/src]# tar -xzvf gcc-9.1.0.tar.gz
**1.2.2、**解凍されたディレクトリに入り、 download_prerequisites
スクリプトを実行します。これにより、コンパイルに必要な依存ファイルとライブラリが自動的にダウンロードされます。
[ root@txy-server /usr/local/src]# cd gcc-9.1.0[root@txy-server /usr/local/src/gcc-9.1.0]# ./contrib/download_prerequisites
**1.2.3、**出力ディレクトリを作成し、すべての中間ファイルをこのディレクトリに配置します。
[ root@txy-server /usr/local/src/gcc-9.1.0]# mkdir gcc-build-9.1.0
**1.2.4、**新しく作成したディレクトリに入り、コンパイル構成を完了します。
[ root@txy-server /usr/local/src/gcc-9.1.0]# cd gcc-build-9.1.0[root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# ../configure -enable-checking=release -enable-languages=c,c++-disable-multilib
パラメータの説明:
--Enable-languages
:gccでサポートされている言語 --Disable-multilib
:他のプラットフォーム用の実行可能コードにコンパイルされたクロスコンパイラを生成しません --Disable-checking
:生成されたコンパイラは、コンパイルプロセス中に追加のチェックを実行しません。また、 –enable-checking = xxx
を使用していくつかのチェックを追加することもできます。**1.2.5、**次に、コンパイルしてインストールできます。
[ root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# make && make install
**1.2.6、**ソフトウェアリンクを作成し、 / usr / bin
の下のgcc関連コマンドをオーバーライドします。これは、MySQLをコンパイルするときに、デフォルトで / usr / bin
ディレクトリにgcc関連コマンドが見つかるためです。
[ root@txy-server ~]# ln -sf /usr/local/bin/* /usr/bin/
**1.2.7、**最後に、gccバージョンが9.1.0であるかどうかを確認します。これは、インストールが成功したことを意味します。
[ root@txy-server ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with:../configure -enable-checking=release -enable-languages=c,c++-disable-multilib
Thread model: posix
gcc version 9.1.0(GCC)[root@txy-server ~]#
**2.1、**MySQL公式ウェブサイトのダウンロードアドレスを入力してください:
**2.2、**ソースパッケージのダウンロードリンクをコピーします。
**2.3、**Linuxでソースパッケージをダウンロードして解凍します。
[ root@txy-server ~]# cd /usr/local/src
[ root@txy-server /usr/local/src]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.18.tar.gz[root@txy-server /usr/local/src]# tar -zxvf mysql-boost-8.0.18.tar.gz
**2.4、**解凍したディレクトリに入り、以下の手順に従ってコンパイルとインストールを完了します。
# データファイルストレージディレクトリを作成します
[ root@txy-server /usr/local/src]# mkdir -p /data/mysql
[ root@txy-server /usr/local/src]# cd mysql-8.0.18/
# コンパイルによって生成された中間ファイルを格納するための新しいディレクトリを作成します。ソースディレクトリでのコンパイルは許可されていないため
[ root@txy-server /usr/local/src/mysql-8.0.18]# mkdir builder
[ root@txy-server /usr/local/src/mysql-8.0.18]# cd builder/[root@txy-server /usr/local/src/mysql-8.0.18/builder]# cmake3 ../-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1-DWITH_INNOBASE_STORAGE_ENGINE=1-DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0-DMYSQL_MAINTAINER_MODE=0-DWITH_SYSTEMD=1-DDOWNLOAD_BOOST=1-DWITH_BOOST=../boost
[ root@txy-server /usr/local/src/mysql-8.0.18/builder]# make && make install
cmake3
コマンドで使用されるパラメーターの説明:
- DCMAKE_INSTALL_PREFIX = / usr / local / mysql
:MySQLインストールのルートディレクトリ- DMYSQL_DATADIR = / data / mysql
:データファイルが保存されているディレクトリ- DSYSCONFDIR = / etc
:MySQL構成ファイルが配置されているディレクトリ- DMYSQL_USER = mysql
:MySQLサービスのユーザー名- DWITH_MYISAM_STORAGE_ENGINE = 1
:MyISAMエンジンをインストールします- DWITH_INNOBASE_STORAGE_ENGINE = 1
:InnoDBエンジンをインストールします- DWITH_ARCHIVE_STORAGE_ENGINE = 1
:アーカイブエンジンをインストールします- DWITH_MEMORY_STORAGE_ENGINE = 1
:メモリエンジンをインストールします- DWITH_FEDERATED_STORAGE_ENGINE = 1
:フェデレーションエンジンをインストールします- DWITH_PARTITION_STORAGE_ENGINE = 1
:パーティションエンジンをインストールします- DWITH_READLINE = 1
:MySQLリードラインライブラリ- DMYSQL_UNIX_ADDR = /tmp/mysql.sock
:sockファイルのパス- DMYSQL_TCP_PORT = 3306
:MySQLリスニングポート- DENABLED_LOCAL_INFILE = 1
:ローカルデータの読み込みを有効にする- DENABLE_DOWNLOADS = 1
:コンパイル中に関連ファイルの独立したダウンロードを許可します- DEXTRA_CHARSETS = all
:MySQLがすべての拡張文字をサポートするようにします- DDEFAULT_CHARSET = utf8mb4
:デフォルトの文字セットをutf8mb4に設定します- DDEFAULT_COLLATION = utf8mb4_general_ci
:デフォルトの文字照合を設定します- DWITH_DEBUG = 0
:デバッグモードを無効にします- DMYSQL_MAINTAINER_MODE = 0
:mysqlメンテナの特定の開発環境を有効にするかどうか- DDOWNLOAD_BOOST = 1
:ブーストライブラリのオンライン更新を許可する- DWITH_BOOST = ../ boost
:ブーストインストールパスを指定しますcmake3
でサポートされているパラメータについては、公式Webサイトのドキュメントを確認してください。
https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
**2.5、**コンパイルしてインストールした後、mysqlユーザーを作成し、対応するディレクトリの所有者を変更します。
[ root@txy-server ~]# groupadd mysql
[ root@txy-server ~]# useradd -M -g mysql -s /sbin/nologin mysql
[ root@txy-server ~]# chown -R mysql:mysql /usr/local/mysql/[root@txy-server ~]# chown -R mysql:mysql /data/mysql/
**2.6、**構成ファイルを編集します。
[ root@txy-server ~]# vim /etc/my.cnf
[ mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
[ mysqld_safe]
log-error=/var/log/mysqld/mysqld.log
pid-file=/var/run/mysqld/mysql.pid
**2.7、**ログファイルが保存されているディレクトリとpidファイルが保存されているディレクトリを作成し、mysqlユーザーにアクセス許可を付与します。
[ root@txy-server ~]# mkdir -p /var/log/mysqld /var/run/mysqld
[ root@txy-server ~]# chown -R mysql:mysql /var/log/mysqld
[ root@txy-server ~]# chown -R mysql:mysql /var/run/mysqld
**2.8、**MySQLコマンドの使用を容易にするために環境変数を構成します。
[ root@txy-server ~]# vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
[ root@txy-server ~]# source /etc/profile
[ root@txy-server ~]# mysql --version #構成が成功したことを確認します
mysql Ver 8.0.18for Linux on x86_64(Source distribution)[root@txy-server ~]#
**2.9、**次のコマンドを実行して、データベースを初期化します。
[ root@txy-server ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/--datadir=/data/mysql
初期化が成功すると、次の図に示すように、ルートアカウントのデフォルトのパスワードが生成されます。
後でパスワードを変更するにはMySQLにログインする必要があるため、パスワードをコピーして保存します
**2.10、**MySQLによって生成された起動ファイルを / usr / lib / systemd / system /
ディレクトリにコピーします。
[ root@txy-server ~]# cp /usr/local/src/mysql-8.0.18/builder/scripts/mysqld.service /usr/lib/systemd/system/[root@txy-server ~]# chown 775/usr/lib/systemd/system/mysqld.service
2.11、systemctl
コマンドを使用してMySQLサービスを開始します。
[ root@txy-server ~]# systemctl start mysqld
**2.12、**ポート3306が正常に監視されているかどうかを確認します。
[ root@txy-server ~]# netstat -lntp |grep 3306
tcp6 00:::33060:::* LISTEN 27363/mysqld
tcp6 00:::3306:::* LISTEN 27363/mysqld
[ root@txy-server ~]#
**2.13、**デフォルトのパスワードを使用してMySQLにログインし、パスワードをリセットして、リモートログインを開きます。
[ root@txy-server ~]# mysql -uroot -pmXyfy/g8\)aus
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; #パスワードを再設定する
mysql> use mysql;
mysql> update user set host ='%' where user='root'; #リモートログインを開く
mysql> FLUSH PRIVILEGES; #更新の変更
**2.14、**視覚化ツールを使用してリモートで接続し、MySQLに正常にアクセスできるかどうかをテストします。
end
Recommended Posts