コンテンツにスキップ

設定ファイル@MySQL

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. セットアップ

インストール

▼ dnfリポジトリから

mysqlコマンドのみをインストールしたい場合はこちら。

$ dnf install -y mysql

mysqlコマンド、MySQLのRDBMS、をインストールしたい場合はこちら。

$ dnf install -y mysql-server

▼ yumリポジトリから

mysqlコマンドのみをインストールしたい場合はこちら。

$ yum install -y mysql

mysqlコマンド、MySQLのRDBMS、をインストールしたい場合はこちら。

$ yum install -y mysql mysql-server


動作確認

▼ ステータス確認

MySQLのプロセスが稼働していることを確認する。

$ systemctl status mysql.service

▼ コネクション確認

DBに接続する。

pオプションの値にはスペースが不要であることに注意する。

$ mysql -u <ユーザー名> -p<パスワード> -h <DBホスト名> <DB名>


パラメーター

▼ パラメーターの種類

パラメーター名 説明
max_connections DBクライアントからのクエリの同時接続数を設定する。
max_execution_time DBクライアントからのクエリのタイムアウト時間を設定する。
time_zone クエリのタイムゾーンを設定する。

▼ パラメーターの設定

パラメーターは、全てのセッションに共通する『グローバルパラメーター』と個別のセッションのみの『セッションパラメーター』がある。

-- グローバルパラメーターの場合
SET GLOBAL time_zone = "Asia/Tokyo";

-- セッションパラメーターの場合
SET time_zone = "Asia/Tokyo";

▼ パラメーターの表示

DBに登録されているグローバルパラメーターとセッションパラメーターを取得する。

-- セッション/グローバルパラメーターを表示
SHOW SESSION VARIABLES;
SHOW GLOBAL VARIABLES;

-- OSとDBのタイムゾーンに関するパラメーターを表示
SHOW SESSION VARIABLES LIKE "%time_zone";
SHOW GLOBAL VARIABLES LIKE "%time_zone";


02. 設定ファイルの種類 (※ Dockerの場合)

/etc/mysql/my.cnfファイル

/etc/mysql/my.cnfファイルとは

MySQLの起動時の値を設定する。

my.cnfファイルは、/etc/mysqlディレクトリ配下に配置されている。

ただ実際には、/etc/mysql/conf.d/ディレクトリと/etc/mysql/mysql.conf.d/ディレクトリ配下にある*.cnfファイルを読み込むようになっている。

# Copyright (c) 2016, 2021, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/


/var/log/mysqld.logファイル

/var/log/mysqld.logファイルとは

MySQLプロセスの実行ログを出力する。

▼ temporary password

初期パスワードが出力されている。

$ less mysqld.log | grep "temporary password"


03. mysqldセクション

mysqldセクション

mysqlサーバーのmysqldプロセスのプールを設定する。


character-set-server

▼ とは

DBの作成時に適用する文字コードを設定する。

[mysql]
character-set-server = utf8mb4


collation_server

▼ とは

照合順序を設定する。

[mysqld]
collation_server = utf8mb4_general_ci


default-time-zone

▼ default-time-zoneとは

デフォルトのタイムゾーンを設定する。

[mysqld]
default-time-zone = SYSTEM


datadir

▼ datadirとは

DBの定義ファイルを配置するディレクトリを設定する。

[mysqld]
datadir = /var/lib/mysql

datadirディレクトリ

DBの定義ファイルを管理する。

基本的には/var/lib/mysqlディレクトリを使用するように設定されている。

DB固有の情報は、DB名のディレクトリで管理されている。

dockerエリアのマウントポイントとして指定される。

[root@<コンテナID>:/var/lib/mysql] $ ls -la

drwxrwxrwt 7 mysql mysql     4096 Dec 17 12:55 .
drwxr-xr-x 1 root  root      4096 Dec  2 11:24 ..
-rw-r----- 1 mysql mysql       56 Dec 17 09:54 auto.cnf
-rw------- 1 mysql mysql     1680 Dec 17 09:54 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 Dec 17 09:54 ca.pem
-rw-r--r-- 1 mysql mysql     1112 Dec 17 09:54 client-cert.pem
-rw------- 1 mysql mysql     1680 Dec 17 09:54 client-key.pem
drwxr-x--- 2 mysql mysql     4096 Dec 17 10:23 foo_db # fooDBのデータベースファイルが管理されている
-rw-r----- 1 mysql mysql     1352 Dec 17 09:54 ib_buffer_pool
-rw-r----- 1 mysql mysql 50331648 Dec 17 10:23 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Dec 17 09:54 ib_logfile1
-rw-r----- 1 mysql mysql 79691776 Dec 17 10:23 ibdata1
-rw-r----- 1 mysql mysql 12582912 Dec 17 12:54 ibtmp1
drwxr-x--- 2 mysql mysql     4096 Dec 17 09:54 mysql
drwxr-x--- 2 mysql mysql     4096 Dec 17 09:54 performance_schema
-rw------- 1 mysql mysql     1680 Dec 17 09:54 private-key.pem
-rw-r--r-- 1 mysql mysql      452 Dec 17 09:54 public-key.pem
-rw-r--r-- 1 mysql mysql     1112 Dec 17 09:54 server-cert.pem
-rw------- 1 mysql mysql     1680 Dec 17 09:54 server-key.pem
drwxr-x--- 2 mysql mysql    12288 Dec 17 09:54 sys


log-error

▼ log-errorとは

エラーログの出力先を設定する。

[mysqld]
log-error = mysql-error.log


log_timestamps

▼ log_timestampsとは

ログのタイムゾーンを設定する。

[mysqld]
log_timestamps = SYSTEM


general_log

▼ general_logとは

一般ログを出力するか否かを設定する。

[mysqld]
general_log = 1


general_log_file

▼ general_log_fileとは

一般ログの出力先のファイルを設定する。

[mysqld]
general_log_file = mysql-general.log


log_queries_not_using_indexes

▼ log_queries_not_using_indexesとは

DBインデックスを使用するか否かを設定する。

[mysqld]
log_queries_not_using_indexes = 0


long_query_time

▼ long_query_timeとは

スロークエリログを出力する場合に、スロークエリと見なす閾値秒数を設定する。

[mysqld]
long_query_time = 3


pid-file

▼ pid-fileとは

プロセスIDが記載されたファイルの作成先を設定する。

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid


secure-file-priv

▼ secure-file-privとは

[mysqld]
secure-file-priv = /var/lib/mysql-files


slow_query_log

▼ slow_query_logとは

スロークエリログを出力するか否かを設定する。

[mysqld]
slow_query_log = 1


slow_query_log_file

▼ slow_query_log_fileとは

スロークエリログの出力先のファイルを設定する。

[mysqld]
slow_query_log_file = mysql-slow.log


socket

▼ socketとは

[mysqld]
socket = /var/lib/mysql/mysql.sock


user

▼ userとは

プロセスの実行ユーザー名を設定する。

[mysqld]
user = mysql


03-02. clientセクション

clientセクションとは

mysqlクライアントツールのclientプロセスのプールを設定する。


default-character-set

▼ default-character-setとは

デフォルトの文字コードを設定する。

[client]
default-character-set = utf8mb4