📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の14版が非表示) | |||
| 103行目: | 103行目: | ||
==== ソースコードからインストール ==== | ==== ソースコードからインストール ==== | ||
ビルドに必要なライブラリをインストールする。<br> | ビルドに必要なライブラリをインストールする。<br> | ||
# SUSE | |||
sudo zypper install bison make cmake ninja git glibc-devel ncurses-devel perl-Data-Dump perl-Data-Dump-Streamer perl-Data-Dumper-Concise krb5-devel \ | sudo zypper install bison make cmake ninja git glibc-devel ncurses-devel perl-Data-Dump perl-Data-Dump-Streamer perl-Data-Dumper-Concise krb5-devel \ | ||
perl libtirpc3 libtirpc-devel rpcgen liblz4-devel libzstd-devel protobuf-devel libicu-devel | perl libtirpc3 libtirpc-devel rpcgen liblz4-devel libzstd-devel protobuf-devel libicu-devel \ | ||
libevent-devel libnuma-devel libfido2-devel libudev-devel systemd-devel doxygen \ | |||
valgrind-devel | libopenssl-devel libopenssl-1_1-devel # OpenSSL 1 を使用する場合 | ||
valgrind-devel # Valgrindを使用する場合 (Valgrindとは、LinuxにおけるC++のメモリリーク等の検知ツールのことである) | |||
<br> | <br> | ||
[https://downloads.mysql.com/archives/community/ MySQLの公式Webサイト]にアクセスして、MySQLのソースコードをダウンロードする。<br> | [https://downloads.mysql.com/archives/community/ MySQLの公式Webサイト]にアクセスして、MySQLのソースコードをダウンロードする。<br> | ||
| 112行目: | 114行目: | ||
[Product Version]は、インストールするMySQLのバージョンを選択、[Operating System]では"Source Code"を選択する。<br> | [Product Version]は、インストールするMySQLのバージョンを選択、[Operating System]では"Source Code"を選択する。<br> | ||
表示されるリストから、最も下欄にある"mysql-boost-<バージョン>.tar.gz"をダウンロードする。<br> | 表示されるリストから、最も下欄にある"mysql-boost-<バージョン>.tar.gz"をダウンロードする。<br> | ||
<u>MySQL 5.7.5からBoostライブラリが必要になったため、Boostライブラリ同梱のものをダウンロードすること。</u> | <br> | ||
<u>MySQL 5.7.5からBoostライブラリが必要になったため、Boostライブラリ同梱のものをダウンロードすること。</u><br> | |||
<u>ただし、MySQL 8.3以降からBoostライブラリは不要になっている。</u><br> | |||
<br> | <br> | ||
または、<code>wget</code>コマンドを使用して直接ダウンロードする。<br> | または、<code>wget</code>コマンドを使用して直接ダウンロードする。<br> | ||
| 125行目: | 129行目: | ||
<br> | <br> | ||
MySQLをビルドおよびインストールする。<br> | MySQLをビルドおよびインストールする。<br> | ||
# MySQL 8.2以前 | |||
cmake .. \ | cmake .. \ | ||
- | -DCMAKE_C_COMPILER=<GCC 8.1以降のgcc実行ファイルのパス> \ | ||
-DCMAKE_BUILD_TYPE=Release \ | -DCMAKE_CXX_COMPILER=<GCC 8.1以降のg++実行ファイルのパス> \ | ||
-DDEFAULT_CHARSET=utf8mb4 \ | -DCMAKE_BUILD_TYPE=Release \ | ||
-DWITH_EXTRA_CHARSETS=all \ | -DCMAKE_INSTALL_PREFIX=<MySQLのインストールディレクトリ> \ | ||
-DDEFAULT_COLLATION=utf8mb4_general_ci \ | -DDEFAULT_CHARSET=utf8mb4 \ | ||
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ | -DWITH_EXTRA_CHARSETS=all \ | ||
-DSYSCONFDIR=<MySQLのインストールディレクトリ> \ | -DDEFAULT_COLLATION=utf8mb4_general_ci \ | ||
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ | |||
-DSYSCONFDIR=<MySQLのインストールディレクトリ> \ | |||
-DMYSQL_DATADIR=<MySQLのインストールディレクトリ>/data \ | -DMYSQL_DATADIR=<MySQLのインストールディレクトリ>/data \ | ||
-DWITH_BOOST=../boost \ | -DWITH_BOOST=../boost \ # MySQL 8.2以前の場合 | ||
-DWITH_SYSTEMD=ON \ # Systemdサービスを使用する場合 | |||
-DWITH_VALGRIND=ON # Valgrindを使用する場合 (Valgrindとは、LinuxにおけるC++のメモリリーク等の検知ツールのことである) | |||
-DWITH_SYSTEMD=ON \ # Systemdサービスを使用する場合 | |||
-DWITH_VALGRIND=ON | |||
make -j $(nproc) | make -j $(nproc) | ||
| 146行目: | 151行目: | ||
cmake .. -G Ninja \ | cmake .. -G Ninja \ | ||
- | -DCMAKE_C_COMPILER=<GCC 8.1以降のgcc実行ファイルのパス> \ | ||
-DCMAKE_BUILD_TYPE=Release \ | -DCMAKE_CXX_COMPILER=<GCC 8.1以降のg++実行ファイルのパス> \ | ||
-DDEFAULT_CHARSET=utf8mb4 \ | -DCMAKE_BUILD_TYPE=Release \ | ||
-DWITH_EXTRA_CHARSETS=all \ | -DCMAKE_INSTALL_PREFIX=<MySQLのインストールディレクトリ> \ | ||
-DDEFAULT_CHARSET=utf8mb4 \ | |||
-DWITH_EXTRA_CHARSETS=all \ | |||
-DDEFAULT_COLLATION=utf8mb4_general_ci \ | -DDEFAULT_COLLATION=utf8mb4_general_ci \ | ||
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ | -DWITH_INNOBASE_STORAGE_ENGINE=1 \ | ||
-DSYSCONFDIR=<MySQLのインストールディレクトリ> \ | -DSYSCONFDIR=<MySQLのインストールディレクトリ> \ | ||
-DMYSQL_DATADIR=<MySQLのインストールディレクトリ>/data \ | -DMYSQL_DATADIR=<MySQLのインストールディレクトリ>/data \ | ||
-DWITH_BOOST=../boost \ | -DWITH_BOOST=../boost \ # MySQL 8.2以前の場合 | ||
-DWITH_SYSTEMD=ON \ # Systemdサービスを使用する場合 | |||
-DWITH_VALGRIND=ON # Valgrindを使用する場合 (Valgrindとは、LinuxにおけるC++のメモリリーク等の検知ツールのことである) | |||
-DWITH_SYSTEMD=ON \ # Systemdサービスを使用する場合 | |||
-DWITH_VALGRIND=ON | |||
ninja -C . | ninja -C . | ||
| 174行目: | 179行目: | ||
次に、MySQLのデータディレクトリを初期化する。(MySQL 5.7.6以降、mysql_install_dbは廃止されていることに注意する)<br> | 次に、MySQLのデータディレクトリを初期化する。(MySQL 5.7.6以降、mysql_install_dbは廃止されていることに注意する)<br> | ||
<br> | <br> | ||
===== Systemdサービスユニットファイルの作成 ===== | |||
MySQLをソースコードからインストールした時、<br> | |||
SystemdサービスからMySQLを起動および停止する場合は、Systemdサービスユニットファイルを作成する。<br> | |||
<br> | |||
作成するファイルを以下に示す。<br> | |||
* mysqld.serviceファイル | |||
* mysqld@.serviceファイル | |||
<br> | |||
* システム全体で使用する場合 | |||
*: /etc/systemd/systemディレクトリ | |||
* 各ユーザで使用する場合 (ただし、各ユーザごとに使用する場合は、特権ポート0〜1023番ポートは使用できない) | |||
*: ~/.config/systemd/userディレクトリ | |||
<br> | |||
# mysqld.serviceファイル | |||
[Unit] | |||
Description=MySQL Server | |||
Documentation=man:mysqld(8) | |||
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html | |||
After=network-online.target | |||
Wants=network-online.target | |||
After=syslog.target | |||
[Install] | |||
WantedBy=multi-user.target | |||
[Service] | |||
Type=notify | |||
# Disable service start and stop timeout logic of systemd for mysqld service. | |||
TimeoutSec=0 | |||
# Execute pre and post scripts as root | |||
# hence, + prefix is used | |||
# Needed to create system tables | |||
ExecStartPre=+/<MySQLのインストールディレクトリ>/bin/mysqld_pre_systemd | |||
# Start main service | |||
ExecStart=/<MySQLのインストールディレクトリ>/bin/mysqld $MYSQLD_OPTS | |||
# Use this to switch malloc implementation | |||
EnvironmentFile=-/etc/sysconfig/mysql | |||
# Sets open_files_limit | |||
LimitNOFILE = 10000 | |||
Restart=on-failure | |||
RestartPreventExitStatus=1 | |||
# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart. | |||
Environment=MYSQLD_PARENT_PID=1 | |||
PrivateTmp=false | |||
PIDFile=/<MySQLのインストールディレクトリ>/tmp/mysqld.pid | |||
<br> | |||
# mysqld@.serviceファイル | |||
[Unit] | |||
Description=MySQL Server | |||
Documentation=man:mysqld(8) | |||
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html | |||
After=network-online.target | |||
Wants=network-online.target | |||
After=syslog.target | |||
[Install] | |||
WantedBy=multi-user.target | |||
[Service] | |||
Type=notify | |||
# Disable service start and stop timeout logic of systemd for mysqld service. | |||
TimeoutSec=0 | |||
# Execute pre and post scripts as root | |||
# hence, + prefix is used | |||
# Needed to create system tables | |||
ExecStartPre=+/<MySQLのインストールディレクトリ>/bin/mysqld_pre_systemd %I | |||
# Start main service | |||
ExecStart=/<MySQLのインストールディレクトリ>/bin/mysqld --defaults-group-suffix=@%I $MYSQLD_OPTS | |||
# Use this to switch malloc implementation | |||
EnvironmentFile=-/etc/sysconfig/mysql | |||
# Sets open_files_limit | |||
LimitNOFILE = 10000 | |||
Restart=on-failure | |||
RestartPreventExitStatus=1 | |||
# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart. | |||
Environment=MYSQLD_PARENT_PID=1 | |||
PrivateTmp=false | |||
<br> | |||
===== MySQLの設定ファイルの作成 ===== | |||
MySQLのインストールディレクトリに、MySQLの設定ファイルであるmy.cnfファイルを作成する。<br> | |||
<u>my.cnfファイルの設定内容については、[[インストール - MySQL8#my.cnfファイルのテンプレート]]のセクションを参照すること。</u><br> | |||
vi /<MySQLのインストールディレクトリ>/my.cnf | vi /<MySQLのインストールディレクトリ>/my.cnf | ||
<br> | <br> | ||
作成したmy. | 作成したmy.cnfファイルを、以下に示すように編集する。<br> | ||
cd <MySQLのインストールディレクトリ> | cd <MySQLのインストールディレクトリ> | ||
| 199行目: | 308行目: | ||
sed -i -e "s/# default_authentication_plugin = mysql_native_password/default_authentication_plugin = mysql_native_password/g" my.cnf | sed -i -e "s/# default_authentication_plugin = mysql_native_password/default_authentication_plugin = mysql_native_password/g" my.cnf | ||
<br> | <br> | ||
===== MySQLの初期化 ===== | |||
MySQLの初期化を行う。<br> | MySQLの初期化を行う。<br> | ||
# MySQLの初期化 | # MySQLの初期化 | ||
/<MySQLのインストールディレクトリ>/bin/mysqld --initialize \ | /<MySQLのインストールディレクトリ>/bin/mysqld --initialize \ | ||
| 207行目: | 316行目: | ||
--basedir=<MySQLのインストールディレクトリ> \ | --basedir=<MySQLのインストールディレクトリ> \ | ||
--datadir=/<MySQLのインストールディレクトリ>/data | --datadir=/<MySQLのインストールディレクトリ>/data | ||
<br> | |||
この時、my.cnfファイルの[log_error]セクションに設定したファイル(例. /<MySQLインストールディレクトリ>/logs/mysql_error.logファイル)に、<br> | |||
MySQLのrootユーザのパスワードが保存される。<br> | |||
# rootユーザのパスワードを確認 | # rootユーザのパスワードを確認 | ||
grep "temporary password" <[log_error]セクションに設定したファイル> | grep "temporary password" <[log_error]セクションに設定したファイル> | ||
例. grep "temporary password" /<MySQLインストールディレクトリ>/logs/mysql_error.log | 例. grep "temporary password" /<MySQLインストールディレクトリ>/logs/mysql_error.log | ||
<br> | <br> | ||
===== MySQLの起動 ===== | |||
MySQLを起動する。<br> | MySQLを起動する。<br> | ||
/<MySQLのインストールディレクトリ>/support-files/mysql.server start | /<MySQLのインストールディレクトリ>/support-files/mysql.server start | ||
<br> | <br> | ||
===== MySQLのユーザの設定 ===== | |||
MySQLの初期設定を行う。<br> | MySQLの初期設定を行う。<br> | ||
# rootユーザで接続する | # rootユーザで接続する | ||
| 229行目: | 343行目: | ||
/<MySQLのインストールディレクトリ>/bin/mysql_secure_installation | /<MySQLのインストールディレクトリ>/bin/mysql_secure_installation | ||
<br> | <br> | ||
===== MySQLの停止 ===== | |||
MySQLを停止するには、以下のコマンドを実行する。<br> | MySQLを停止するには、以下のコマンドを実行する。<br> | ||
<u>この時、/var/lock/subsys/mysqlファイルを削除する必要があるため、スーパーユーザ権限で行う必要がある。</u><br> | <u>この時、/var/lock/subsys/mysqlファイルを削除する必要があるため、スーパーユーザ権限で行う必要がある。</u><br> | ||
sudo /<MySQLのインストールディレクトリ>/support-files/mysql.server stop | sudo /<MySQLのインストールディレクトリ>/support-files/mysql.server stop | ||
<br><br> | |||
== MySQL Router == | |||
MySQL Routerは、MySQL InnoDB ClusterやInnoDB ReplicaSetで使用可能であり、ロードバランスや障害発生時のフェイルオーバーに対応したルーティングを透過的に実現するミドルウェア製品である。<br> | |||
詳細は、[[MySQL - MySQL Router]]を参照すること。<br> | |||
<br><br> | |||
== my.cnfファイル == | |||
my.cnfファイルの各セクションの意味と役割を以下に示す。<br> | |||
<br> | |||
* [mysqld]セクション | |||
*: MySQLサーバデーモン (バックグラウンドで動作するサーバプロセス) の設定を定義する。 | |||
*: サーバの動作に関する全ての主要な設定 (メモリ、キャッシュ、ログ、文字コード等) が含まれる。 | |||
*: このセクションの設定はサーバ全体に影響を与える。 | |||
*: 例: innodb_buffer_pool_sizeキー、character-set-serverキー、portキー等 | |||
<br> | |||
* [mysql]セクション | |||
*: MySQLコマンドラインクライアント (mysqlコマンド) 特有の設定を定義する。 | |||
*: コマンドラインでMySQLに接続する際に使用される設定である。 | |||
*: 主に、クライアントツールの動作に関する設定が含まれる。 | |||
*: 例: default-character-setキー、promptキー、auto-vertical-outputキー等 | |||
<br> | |||
* [client]セクション | |||
*: 全てのMySQLクライアントプログラム共通の設定を定義する。 | |||
*: mysqlコマンドのみではなく、mysqldumpコマンド、mysqlimportコマンド、mysqladminコマンド等のクライアントツール全てに適用される。 | |||
*: 主に、接続関連の設定が含まれる。 | |||
*: portキー、socketキー、default-character-setキー等 | |||
<br> | |||
* mysqldコマンドは、[mysqld]セクションの設定を使用する。 | |||
* mysqlコマンドは、[mysql]セクションおよび[client]セクションの両方の設定を使用する。 | |||
* mysqldumpコマンド等のその他のクライアントツールは、 [client]セクションの設定を使用する。 | |||
<br> | |||
# 共通の接続設定は[client]セクションにまとめる。 | |||
# [mysql]セクションには、CLI固有の設定のみを記述する。 | |||
# [mysqld]セクションにはサーバ固有の設定を記述する。 | |||
<br><br> | <br><br> | ||
| 257行目: | 408行目: | ||
# utf8mb4を使う場合 | # utf8mb4を使う場合 | ||
collation-server = utf8mb4_bin | |||
# SQLモード | # SQLモード | ||
| 267行目: | 418行目: | ||
# max_allowed_packet = 16MB | # max_allowed_packet = 16MB | ||
# MySQL 5.6.6 | # MySQL 5.6.6 以降はデフォルトでON: InnoDBをテーブルごとにファイルを分ける | ||
innodb_file_per_table = 1 | innodb_file_per_table = 1 | ||
| 302行目: | 453行目: | ||
user = USER_NAME | user = USER_NAME | ||
socket = MYSQL_DATA_BASE_DIR/tmp/mysql.sock | socket = MYSQL_DATA_BASE_DIR/tmp/mysql.sock | ||
default-character-set = CHARACTER_SET | default-character-set = CHARACTER_SET | ||
# 例: プロンプトの設定やその他のCLI固有の設定 | |||
prompt = '\u@\h [\d]> ' | |||
auto-vertical-output = 1 | |||
[client] | [client] | ||
| 330行目: | 463行目: | ||
user = USER_NAME | user = USER_NAME | ||
socket = MYSQL_DATA_BASE_DIR/tmp/mysql.sock | socket = MYSQL_DATA_BASE_DIR/tmp/mysql.sock | ||
default-character-set = utf8mb4 | |||
<br><br> | <br><br> | ||
| 585行目: | 719行目: | ||
== DBeaver == | == DBeaver == | ||
DBeaverは、Oracle、SQLServer、MySQL、MariaDB、SQLite等の計42種類のドライバに対応したSQLクライアントツールである。<br> | DBeaverは、Oracle、SQLServer、MySQL、MariaDB、SQLite等の計42種類のドライバに対応したSQLクライアントツールである。<br> | ||
DBeaverの詳細を知りたい場合は、[[インストール - DBeaver|インストール - DBeaverのページ]]を確認すること。<br> | |||
<br> | <br> | ||
<u>※注意</u><br> | <u>※注意</u><br> | ||