📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の44版が非表示)
9行目: 9行目:
もし、既にMariaDBがインストールされている場合は、MariaDBをアンインストールする。<br>
もし、既にMariaDBがインストールされている場合は、MariaDBをアンインストールする。<br>
まず、インストールされているパッケージの確認するため、以下のコマンドを実行する。<br>
まず、インストールされているパッケージの確認するため、以下のコマンドを実行する。<br>
  # CentOS
  # RHEL
  sudo rpm -qa | grep maria
  sudo rpm -qa | grep maria
   
   
15行目: 15行目:
  sudo zypper search -i | grep maria
  sudo zypper search -i | grep maria
<br>
<br>
CentOSの場合、<code>mariadb-libs-<バージョン名>.el<バージョン名>.x86_64</code>と表示されるので、このパッケージをアンインストールする。<br>
RHELの場合、<code>mariadb-libs-<バージョン名>.el<バージョン名>.<アーキテクチャ名></code>と表示されるので、このパッケージをアンインストールする。<br>
SUSEの場合、mariadbと表示されるので、このパッケージをアンインストールする。<br>
SUSEの場合、mariadbと表示されるので、このパッケージをアンインストールする。<br>
  # CentOS
  # RHEL
  sudo yum remove mariadb-libs
  sudo dnf remove mariadb-libs
  sudo rm -rf /var/lib/mysql/
  sudo rm -rf /var/lib/mysql/
   
   
29行目: 29行目:


== MySQL公式リポジトリの追加と設定 ==
== MySQL公式リポジトリの追加と設定 ==
MySQL8.0をインストールするには、まず、以下のMySQL公式Webサイトからリポジトリを登録する必要がある。<br>
過去のMySQLのGPGキーがインポートされている場合は削除する。<br>
* CentOS(CentOS 7系はRHEL 7系、CentOS 8系はRHEL 8系のリポジトリをダウンロードする)
# 削除対象の鍵を確認する。
*: [https://dev.mysql.com/downloads/repo/yum/ CentOS向けMySQL公式サイト]
#: <code>sudo rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'</code>
# 過去のMySQLのGPGキーを削除する。
#: <code>sudo rpm -e gpg-pubkey-XXXXXXXX-XXXXXXXX</code>
# 過去のMySQLのGPGキーファイルを削除する。
#: <code>sudo rm "/etc/RPM-GPG-KEY-mysql*"</code>
<br>
まず、MySQL公式Webサイトからリポジトリを登録する必要がある。<br>
* RHEL
*: [https://dev.mysql.com/downloads/repo/yum/ RHEL向けMySQL公式サイト]
* SUSE
* SUSE
*: [https://dev.mysql.com/downloads/repo/suse/ SUSE向けMySQL公式サイト]
*: [https://dev.mysql.com/downloads/repo/suse/ SUSE向けMySQL公式サイト]
<br>
<br>
または、以下のコマンドを実行して直接インストールする。<br>
または、以下のコマンドを実行して直接インストールする。<br>
  # CentOS
  # RHEL 9
  sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
  sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
# RHEL 8
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-5.noarch.rpm
   
   
  # SUSE
  # SUSE 15
  sudo zypper install https://dev.mysql.com/get/mysql80-community-release-sl15-3.noarch.rpm
  sudo zypper install https://dev.mysql.com/get/mysql80-community-release-sl15-6.noarch.rpm
sudo rpm --import /etc/RPM-GPG-KEY-mysql-2022  # MySQLリポジトリのパッケージの署名チェックに使用するMySQL製品用のGnuPGキーをシステムにインポートする
  sudo zypper refresh
  sudo zypper refresh
  または
  または
  sudo rpm -ivh mysql80-community-release-sl15-3.noarch.rpm
  sudo rpm -ivh mysql80-community-release-sl15-6.noarch.rpm
  sudo rpm -import /etc/RPM-GPG-KEY-mysql
  sudo rpm --import /etc/RPM-GPG-KEY-mysql-2022  # MySQLリポジトリのパッケージの署名チェックに使用するMySQL製品用のGnuPGキーをシステムにインポートする
  sudo zypper refresh
  sudo zypper refresh
<br>
<br>
50行目: 62行目:
<br>
<br>
リポジトリが追加されたかどうかは、以下のコマンドで確認できる。<br>
リポジトリが追加されたかどうかは、以下のコマンドで確認できる。<br>
  # CentOS
  # RHEL
  sudo yum repolist all | grep mysql
  sudo dnf repolist all | grep mysql
   
   
  # SUSE
  # SUSE
62行目: 74行目:
==== リポジトリを追加してインストール ====
==== リポジトリを追加してインストール ====
インストールを行う前に、パッケージのバージョンを確認する。<br>
インストールを行う前に、パッケージのバージョンを確認する。<br>
  # CentOS
  # RHEL
  sudo yum info mysql-community-server
  sudo dnf info mysql-community-server
   
   
  # SUSE
  # SUSE
71行目: 83行目:
インストールの途中において、MySQLのGPG公開鍵が無いというメッセージが表示されるが、<br>
インストールの途中において、MySQLのGPG公開鍵が無いというメッセージが表示されるが、<br>
インストール時にGPG公開鍵も同時にインストールされるので、そのまま続ける。<br>
インストール時にGPG公開鍵も同時にインストールされるので、そのまま続ける。<br>
  # CentOS
  # RHEL
  sudo yum install mysql-community-server
  sudo dnf install mysql-community-server
   
   
  # SUSE
  # SUSE
81行目: 93行目:
<br>
<br>
最後に、自動起動の設定をしてMySQLを起動する。<br>
最後に、自動起動の設定をしてMySQLを起動する。<br>
# RHEL
  sudo systemctl enable mysqld
  sudo systemctl enable mysqld
  sudo systemctl start mysqld
  sudo systemctl start mysqld
# SUSE
sudo systemctl enable mysql
sudo systemctl start mysql
<br>
<br>
==== ソースコードからインストール ====
==== ソースコードからインストール ====
ビルドに必要なライブラリをインストールする。<br>
ビルドに必要なライブラリをインストールする。<br>
  sudo zypper install cmake git glibc-devel ncurses-devel perl perl-Data-Dumper libtirpc libtirpc-devel rpcgen
# 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 \
                    perl libtirpc3 libtirpc-devel rpcgen liblz4-devel libzstd-devel protobuf-devel libicu-devel \
                    libevent-devel libnuma-devel libfido2-devel libudev-devel systemd-devel doxygen \
                    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>
92行目: 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>
105行目: 129行目:
<br>
<br>
MySQLをビルドおよびインストールする。<br>
MySQLをビルドおよびインストールする。<br>
# MySQL 8.2以前
  cmake .. \
  cmake .. \
       -DCMAKE_INSTALL_PREFIX=<MySQLのインストールディレクトリ> \
      -DCMAKE_C_COMPILER=<GCC 8.1以降のgcc実行ファイルのパス>  \
       -DDEFAULT_CHARSET=utf8mb4 \
      -DCMAKE_CXX_COMPILER=<GCC 8.1以降のg++実行ファイルのパス> \
       -DWITH_EXTRA_CHARSETS=all \
      -DCMAKE_BUILD_TYPE=Release                          \
      -DCMAKE_INSTALL_PREFIX=<MySQLのインストールディレクトリ>    \
      -DDEFAULT_CHARSET=utf8mb4                      \
      -DWITH_EXTRA_CHARSETS=all                      \
      -DDEFAULT_COLLATION=utf8mb4_general_ci        \
      -DWITH_INNOBASE_STORAGE_ENGINE=1              \
      -DSYSCONFDIR=<MySQLのインストールディレクトリ>        \
      -DMYSQL_DATADIR=<MySQLのインストールディレクトリ>/data \
      -DWITH_BOOST=../boost \  # MySQL 8.2以前の場合
      -DWITH_SYSTEMD=ON    \  # Systemdサービスを使用する場合
      -DWITH_VALGRIND=ON      # Valgrindを使用する場合 (Valgrindとは、LinuxにおけるC++のメモリリーク等の検知ツールのことである)
make -j $(nproc)
make install
# または
cmake .. -G Ninja \
      -DCMAKE_C_COMPILER=<GCC 8.1以降のgcc実行ファイルのパス>  \
      -DCMAKE_CXX_COMPILER=<GCC 8.1以降のg++実行ファイルのパス> \
      -DCMAKE_BUILD_TYPE=Release                          \
       -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以前の場合
       -DCMAKE_C_COMPILER=<GCCのインストールディレクトリ>/bin/gcc_11_2 \
       -DWITH_SYSTEMD=ON    \ # Systemdサービスを使用する場合
       -DCMAKE_CXX_COMPILER=<G++のインストールディレクトリ>/bin/g++_11_2
       -DWITH_VALGRIND=ON      # Valgrindを使用する場合 (Valgrindとは、LinuxにおけるC++のメモリリーク等の検知ツールのことである)
      -DWITH_PIC=1  # 不要の可能性あり
   
   
  make -j $(nproc)
  ninja -C .
  make install
  ninja -C . install
<br>
<br>
/<MySQLのインストールディレクトリ>/libディレクトリから/<MySQLのインストールディレクトリ>/lib64ディレクトリへ、シンボリックリンクを作成する。<br>
/<MySQLのインストールディレクトリ>/libディレクトリから/<MySQLのインストールディレクトリ>/lib64ディレクトリへ、シンボリックリンクを作成する。<br>
129行目: 176行目:
  mkdir <MySQLのインストールディレクトリ>/tmp
  mkdir <MySQLのインストールディレクトリ>/tmp
  mkdir <MySQLのインストールディレクトリ>/logs
  mkdir <MySQLのインストールディレクトリ>/logs
# ファイルの作成
touch <MySQLのインストールディレクトリ>/logs/mysqld.err
<br>
<br>
次に、MySQLのデータディレクトリを初期化する。(MySQL 5.7.6以降、mysql_install_dbは廃止されていることに注意する)<br>
次に、MySQLのデータディレクトリを初期化する。(MySQL 5.7.6以降、mysql_install_dbは廃止されていることに注意する)<br>
<br>
<br>
以下のコマンドを実行した後、/var/log/mysql/mysqld.logファイルに、MySQLのrootユーザのパスワードが保存される。<br>
===== Systemdサービスユニットファイルの作成 =====
もし、保存されてない場合は、/<MySQLのインストールディレクトリ>/logs/mysqld.errファイルを確認する。<br>
MySQLをソースコードからインストールした時、<br>
  /<MySQLのインストールディレクトリ>/bin/mysqld --initialize                        \
SystemdサービスからMySQLを起動および停止する場合は、Systemdサービスユニットファイルを作成する。<br>
                                      --user=<任意のユーザ名>                \ # . mysql等
<br>
                                      --basedir=<MySQLのインストールディレクトリ> \
作成するファイルを以下に示す。<br>
                                      --datadir=/<MySQLのインストールディレクトリ>/data
* 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>
<br>
MySQLのインストールディレクトリに、次のセクションに記述している内容のmy.cnfファイルを作成する。<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.cnfファイルを、以下のように編集する。<br>
作成したmy.cnfファイルを、以下に示すように編集する。<br>
cd <MySQLのインストールディレクトリ>
  # my.cnf : ポートの変更
  # my.cnf : ポートの変更
  sed -i -e "s/\[_PORT_NO_\]/<任意のポート番号  例. 53306>/g" /<MySQLのインストールディレクトリ>/my.cnf
  sed -i -e "s/PORT_NO/<任意のポート番号  例. 53306>/g" my.cnf
   
   
  # my.cnf : ユーザ名の変更
  # my.cnfc: ユーザ名の変更
  sed -i -e "s/\[_USER_NAME_\]/<任意のユーザ名  例. mysql>/g" /<MySQLのインストールディレクトリ>/my.cnf
  sed -i -e "s/USER_NAME/<任意のユーザ名  例. mysql>/g" my.cnf
   
   
  # my.cnf : MySQLのデータディレクトリの変更
  # my.cnfm: MySQLのデータディレクトリの変更
  sed -i -e "s/\[_MYSQL_DATA_BASE_DIR_\]/<MySQLのインストールディレクトリ  例. \/home\/user\/InstallSoftware\/MySQL>/g" /<MySQLのインストールディレクトリ>/my.cnf
  sed -i -e "s/MYSQL_DATA_BASE_DIR/<MySQLのインストールディレクトリ  例. \/home\/user\/InstallSoftware\/MySQL>/g" /my.cnf
   
   
  # my.cnf : 文字コードの変更
  # my.cnf : 文字コードの変更
  sed -i -e "s/\[_CHARACTER_SET_\]/utf8mb4/g" /<MySQLのインストールディレクトリ>/my.cnf
  sed -i -e "s/CHARACTER_SET/utf8mb4/g" my.cnf
  sed -i -e "s/# collation-server = utf8mb4_bin/collation-server = utf8mb4_bin/g" /<MySQLのインストールディレクトリ>/my.cnf
  sed -i -e "s/# collation-server = utf8mb4_bin/collation-server = utf8mb4_bin/g" my.cnf
# my.cnff: パスワードの有効期限を無期限に延長する場合
sed -i -e "s/# default_password_lifetime = 0/default_password_lifetime = 0/g" my.cnf
   
   
  # my.cnf : パスワードの有効期限を無期限に延長する場合
  # my.cnf.: パスワード認証をレガシーに設定する場合
  sed -i -e "s/# default_password_lifetime = 0/default_password_lifetime = 0/g" /<MySQLのインストールディレクトリ>/my.cnf
  sed -i -e "s/# default_authentication_plugin = mysql_native_password/default_authentication_plugin = mysql_native_password/g" my.cnf
<br>
 
===== MySQLの初期化 =====
MySQLの初期化を行う。<br>
# MySQLの初期化
/<MySQLのインストールディレクトリ>/bin/mysqld --initialize                              \
                                      --user=<my.cnfファイルのuserキーの値(ユーザ名)>  \  # 例. mysql等
                                      --basedir=<MySQLのインストールディレクトリ>        \
                                      --datadir=/<MySQLのインストールディレクトリ>/data
<br>
この時、my.cnfファイルの[log_error]セクションに設定したファイル(例. /<MySQLインストールディレクトリ>/logs/mysql_error.logファイル)に、<br>
MySQLのrootユーザのパスワードが保存される。<br>
# rootユーザのパスワードを確認
grep "temporary password" <[log_error]セクションに設定したファイル>
   
   
  # my.cnf : パスワード認証をレガシーに設定する場合
  . grep "temporary password" /<MySQLインストールディレクトリ>/logs/mysql_error.log
sed -i -e "s/# default_authentication_plugin = mysql_native_password/default_authentication_plugin = mysql_native_password/g" /<MySQLのインストールディレクトリ>/my.cnf
<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ユーザで接続する
180行目: 341行目:
/<MySQLのインストールディレクトリ>/binディレクトリにあるmysql_secure_installationを実行する。<br>
/<MySQLのインストールディレクトリ>/binディレクトリにあるmysql_secure_installationを実行する。<br>
詳細は、[[インストール - MySQL8#MySQLの初期設定]]を参照すること。<br>
詳細は、[[インストール - MySQL8#MySQLの初期設定]]を参照すること。<br>
/<MySQLのインストールディレクトリ>/bin/mysql_secure_installation
<br>
<br>
===== MySQLの停止 =====
MySQLを停止するには、以下のコマンドを実行する。<br>
MySQLを停止するには、以下のコマンドを実行する。<br>
  /<MySQLのインストールディレクトリ>/support-files/mysql.server stop
<u>この時、/var/lock/subsys/mysqlファイルを削除する必要があるため、スーパーユーザ権限で行う必要がある。</u><br>
  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>


188行目: 388行目:
my.cnfファイルのテンプレートを以下に記述する。<br>
my.cnfファイルのテンプレートを以下に記述する。<br>
  [mysqld]
  [mysqld]
  port      = [_PORT_NO_]
  port      = PORT_NO
  user      = [_USER_NAME_]
  user      = USER_NAME
  basedir  = [_MYSQL_DATA_BASE_DIR_]
  basedir  = MYSQL_DATA_BASE_DIR
  datadir  = [_MYSQL_DATA_BASE_DIR_]/data
  datadir  = MYSQL_DATA_BASE_DIR/data
  tmpdir    = [_MYSQL_DATA_BASE_DIR_]/tmp
  tmpdir    = MYSQL_DATA_BASE_DIR/tmp
  socket    = [_MYSQL_DATA_BASE_DIR_]/tmp/mysql.sock
  socket    = MYSQL_DATA_BASE_DIR/tmp/mysql.sock
  pid-file  = [_MYSQL_DATA_BASE_DIR_]/logs/mysqld.pid
  pid-file  = MYSQL_DATA_BASE_DIR/logs/mysqld.pid
  log-error = [_MYSQL_DATA_BASE_DIR_]/logs/mysqld
  log-error = MYSQL_DATA_BASE_DIR/logs/mysql_error.log
general_log_file = MYSQL_DATA_BASE_DIR/logs/mysql.log
general_log      = 1
long_query_time  = 2
log-queries-not-using-indexes
   
   
  # Windows / Mac環境のみ
  # Windows / Mac環境のみ
201行目: 405行目:
   
   
  # 文字コード
  # 文字コード
  character-set-server = [_CHARACTER_SET_]
  character-set-server = CHARACTER_SET
   
   
  # utf8mb4を使う場合
  # utf8mb4を使う場合
  # collation-server = utf8mb4_bin
  collation-server = utf8mb4_bin
   
   
  # SQLモード
  # SQLモード
214行目: 418行目:
  # max_allowed_packet = 16MB
  # max_allowed_packet = 16MB
   
   
  # MySQL 5.6.6 以降はデフォルトでON : InnoDBをテーブルごとにファイルを分ける
  # MySQL 5.6.6 以降はデフォルトでON: InnoDBをテーブルごとにファイルを分ける
  innodb_file_per_table = 1
  innodb_file_per_table = 1
   
   
246行目: 450行目:
   
   
  [mysql]
  [mysql]
  port      = [_PORT_NO_]
  port      = PORT_NO
  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
[mysql.server]
port      = [_PORT_NO_]
user      = [_USER_NAME_]
basedir  = [_MYSQL_DATA_BASE_DIR_]
datadir  = [_MYSQL_DATA_BASE_DIR_]/data
tmpdir    = [_MYSQL_DATA_BASE_DIR_]/tmp
socket    = [_MYSQL_DATA_BASE_DIR_]/tmp/mysql.sock
pid-file  = [_MYSQL_DATA_BASE_DIR_]/logs/mysqld.pid
log-error = [_MYSQL_DATA_BASE_DIR_]/logs/mysqld
default-character-set = [_CHARACTER_SET_]
   
   
  [mysqld_safe]
  # 例: プロンプトの設定やその他のCLI固有の設定
port      = [_PORT_NO_]
  prompt = '\u@\h [\d]> '
user      = [_USER_NAME_]
  auto-vertical-output = 1
basedir  = [_MYSQL_DATA_BASE_DIR_]
datadir  = [_MYSQL_DATA_BASE_DIR_]/data
tmpdir    = [_MYSQL_DATA_BASE_DIR_]/tmp
  socket    = [_MYSQL_DATA_BASE_DIR_]/tmp/mysql.sock
  pid-file  = [_MYSQL_DATA_BASE_DIR_]/logs/mysqld.pid
log-error = [_MYSQL_DATA_BASE_DIR_]/logs/mysqld
default-character-set = [_CHARACTER_SET_]
   
   
  [client]
  [client]
  port      = [_PORT_NO_]
  port      = PORT_NO
  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>


313行目: 500行目:
<br>
<br>
MySQLを再起動するため、以下のコマンドを実行する。<br>
MySQLを再起動するため、以下のコマンドを実行する。<br>
# RHEL
  sudo systemctl restart mysqld
  sudo systemctl restart mysqld
# SUSE
sudo systemctl restart mysql
<br>
<br>
もし、rootユーザのパスワードを変更する場合、MySQLにログインして以下のコマンドを実行する。<br>
もし、rootユーザのパスワードを変更する場合、MySQLにログインして以下のコマンドを実行する。<br>
431行目: 622行目:
<br>
<br>
MySQLを再起動をして設定を反映する。<br>
MySQLを再起動をして設定を反映する。<br>
# RHEL
sudo systemctl restart mysqld
# SUSE
  sudo systemctl restart mysql
  sudo systemctl restart mysql
<br>
<br>
448行目: 643行目:
<br>
<br>
MySQLを再起動して設定を反映させる。<br>
MySQLを再起動して設定を反映させる。<br>
# RHEL
sudo systemctl restart mysqld
# SUSE
  sudo systemctl restart mysql
  sudo systemctl restart mysql
<br>
<br>
501行目: 700行目:
MySQL WorkBenchをインストールする。<br>
MySQL WorkBenchをインストールする。<br>
  make install DESTDIR=<MySQL WorkBenchのインストールディレクトリ>
  make install DESTDIR=<MySQL WorkBenchのインストールディレクトリ>
<br><br>
== トラブルシューティング ==
==== エラー : Public Key Retrieval is not allowed ====
クライアントがサーバから自動的に公開鍵を要求できるように、mysql-connectorに<code>allowPublicKeyRetrieval=true</code>オプションを追加する必要がある。<br>
これは、悪意のあるプロキシが平文のパスワードを取得するためのMITM攻撃を行う可能性があるため、標準では<code>false</code>になっており、明示的に有効にする必要がある。<br>
<br>
また、テストや開発のために使用する場合は、<code>useSSL=false</code>オプションも付加して接続してもよい。<br>
<br>
詳細は、[https://mysql-net.github.io/MySqlConnector/connection-options/ MySQLの公式Webサイト]を参照すること。<br>
# 接続コマンド
jdbc:mysql://<Webサーバのホスト名>:<MySQLのポート番号>/db?allowPublicKeyRetrieval=true&useSSL=false
# 例
jdbc:mysql://localhost:3306/db?allowPublicKeyRetrieval=true&useSSL=false
<br><br>
<br><br>


== DBeaver ==
== DBeaver ==
DBeaverは、Oracle、SQLServer、MySQL、MariaDB、SQLite等の計42種類のドライバに対応したSQLクライアントツールである。<br>
DBeaverは、Oracle、SQLServer、MySQL、MariaDB、SQLite等の計42種類のドライバに対応したSQLクライアントツールである。<br>
<br>
DBeaverの詳細を知りたい場合は、[[インストール - DBeaver|インストール - DBeaverのページ]]を確認すること。<br>
DBeaverはJavaで開発されているため、動作にはJRE(Java Runtime Environment)が必要であるが、<br>
ダウンロードしたDBeaverにはJREが付属している。<br>
<br>
もし、最新のJREを使用する場合、以下に示すOracleのJREダウンロードページからJavaSEをダウンロードする。<br>
* https://www.java.com/ja/download/
* https://www.oracle.com/java/technologies/javase-downloads.html
<br>
ダウンロードしたJavaSEを任意のディレクトリに配置して、インストール(Windows)または環境変数PATH(Linux)を設定する。<br>
<br>
[https://dbeaver.io/download/ DBeaverの公式Webサイト]にアクセスして、Linux 64 bit (zip)をダウンロードする。<br>
ダウンロードしたDBeaverを解凍する。(ここでは、~/InstallSoftware/DBeaverに解凍している)<br>
<br>
以下のようなデスクトップエントリファイルを作成する。<br>
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=DBeaver Community <バージョン名>
GenericName=DBeaver Community
Comment=Universal Database Manager and SQL Client.
Path=/home/<ユーザ名>/InstallSoftware/DBeaver/
Exec=/home/<ユーザ名>/InstallSoftware/DBeaver/dbeaver
Icon=/home/<ユーザ名>/InstallSoftware/DBeaver/dbeaver.png
Categories=IDE;Development
WM_CLASS=DBeaver
StartupWMClass=DBeaver
StartupNotify=true
Keywords=Database;SQL;IDE;JDBC;ODBC;MySQL;PostgreSQL;Oracle;DB2;MariaDB
MimeType=application/sql
<br>
<br>
<u>※注意</u><br>
<u>※注意</u><br>
548行目: 733行目:
<br>
<br>
最後に、[接続構成]画面下の[OK]ボタンを押下する。<br>
最後に、[接続構成]画面下の[OK]ボタンを押下する。<br>
<br><br>
== Adminer ==
PHPとMySQLやPostgreSQLと連携する時、データベースの内容をグラフィカルな環境で確認する場合、Adminerを使用すると便利である。<br>
<br>
Adminerは、インストール不要であり、PHPファイルが1つで導入が簡単である。<br>
1つのファイルで、MySQL、PostgreSQL、SQLite、MS SQL、Oracle DB、SimpleDB、Elasticsearch、MongoDBに対応している。<br>
<br>
<u>ただし、PCにデータベースドライバの導入は別途必要であることに注意する。</u><br>
<br>
phpMyAdminやphpPgAdminは、導入に手間が掛かり、ブルートフォースアタックの対象になることもある。<br>
<br>
[https://www.adminer.org/en/ Adminerの公式Webサイト]にアクセスして、Adminer(PHPファイル)をダウンロードする。<br>
ダウンロードしたファイルを、ドキュメントルート(/var/www/htmlディレクトリ等)に配置する。 (ファイル名は自由に変更してもよい)<br>
<br><br>
<br><br>


== phpMyAdmin ==
== phpMyAdmin ==
==== パッケージ管理システムからインストール ====
===== phpMyAdminのインストール =====
===== phpMyAdminのインストール =====
常にコマンドラインから操作することは面倒であるので、Webブラウザから操作できるphpMyAdminをインストールする。<br>
常にコマンドラインから操作することは面倒であるので、Webブラウザから操作できるphpMyAdminをインストールする。<br>
PHPからMySQLを使用するために必要なパッケージが一式インストールできるので、phpMyAdminを使用する予定がなくても、<br>
PHPからMySQLを使用するために必要なパッケージが一式インストールできるので、phpMyAdminを使用する予定がなくても、<br>
インストールしておくと便利である。<br>
インストールしておくと便利である。<br>
  # CentOS
  # RHEL
  sudo yum --enablerepo=epel,remi,remi-php73 install phpMyAdmin
  sudo dnf install epel-release
  sudo yum --enablerepo=epel,remi,remi-php73 install php-pecl-mcrypt
  sudo dnf install phpmyadmin php-pecl-mcrypt
   
   
  # SUSE
  # SUSE
  sudo zypper install phpMyAdmin
  sudo zypper install phpMyAdmin
<br>
<br>
===== phpMyAdminの設定 =====
===== phpMyAdminの設定 =====
まず、設定ファイルであるconfig.inc.phファイルを編集する。<br>
まず、設定ファイルであるconfig.inc.phファイルを編集する。<br>
574行目: 773行目:
<br>
<br>
設定ファイルはサンプルがあるので、それをコピーして編集する。<br>
設定ファイルはサンプルがあるので、それをコピーして編集する。<br>
  sudo cp -a /usr/share/doc/phpMyAdmin-4.9.0.1/config.sample.inc.php /etc/phpMyAdmin/config.inc.php
  sudo cp -a /usr/share/doc/phpMyAdmin-<バージョン>/config.sample.inc.php /etc/phpMyAdmin/config.inc.php
  sudo nano /etc/phpMyAdmin/config.inc.php
  sudo nano /etc/phpMyAdmin/config.inc.php
<br>
<br>
ファイルの先頭のあたりに、以下の行がある。<br>
ファイルの先頭のあたりに存在する<code>$cfg['blowfish_secret']</code>キーの値に、上記で作成したパスフレーズを入力する。<br>
$cfg['blowfish_secret']の値に、上記で作成したパスフレーズを入力する。<br>
  /**
  /**
  * This is needed for cookie based authentication to encrypt password in
  * This is needed for cookie based authentication to encrypt password in
  * cookie. Needs to be 32 chars long.
  * cookie. Needs to be 32 chars long.
  */
  */
  $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
  $cfg['blowfish_secret'] = <パスフレーズ>''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
<br>
<br>
次に、phpMyAdmin.conf”ファイルの設定を行う。<br>
次に、phpMyAdmin.confファイルの設定を行う。<br>
まず、アクセス権に関する設定を行う。(これを行わないとphpMyAdminにアクセスできない)<br>
まず、アクセス権に関する設定を行う。(この設定を行うことにより、phpMyAdminにアクセスできる)<br>
  sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
  sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
16行目と30行目にある”Require local”の1つ下の行に以下の設定を追加する。<br>
16行目と30行目にある<code>Require local</code>の1つ下の行に以下の設定を追加する。<br>
  # Apache 2.4
  # Apache 2.4
  Require ip 192.168.xxx.0/24
  Require ip 192.168.xxx.0/24
624行目: 822行目:


最後に、MySQLを再起動する。<br>
最後に、MySQLを再起動する。<br>
# RHEL
  sudo systemctl restart mysqld
  sudo systemctl restart mysqld
# SUSE
sudo systemctl restart mysql
<br>
<br>
phpMyAdminにログインできるか確認する。<br>
phpMyAdminにログインできるか確認する。<br>
<br>
==== 手動でインストール ====
[https://www.phpmyadmin.net phpMyAdminの公式Webサイト]にアクセスして、phpMyAdminをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
unzip phpMyAdmin-<バージョン>-all-languages.zip
mv phpMyAdmin-<バージョン>-all-languages phpMyAdmin
<br>
解凍したphpMyAdminのディレクトリを、Apache2またはNginXのドキュメントルートに移動する。<br>
phpMyAdmin用の仮想ホストを構築していることが望ましい。<br>
mv phpMyAdmin <Apache2またはNginXのドキュメントルート>
cd /<Apache2またはNginXのドキュメントルート>/phpMyAdmin
<br>
phpMyAdminの設定を行う。<br>
cp config.sample.inc.php config.inc.php
vi config.inc.php
<br>
<syntaxhighlight lang="php">
# config.inc.phpファイル
# 編集前
$cfg['Servers'][$i]['host'] = 'localhost';
# 編集後
$cfg['Servers'][$i]['host'] = '<ホスト名またはIPアドレス>:<MySQLのポート番号>';
// 例. $cfg['Servers'][$i]['host'] = '127.0.0.1:3306';
</syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]]