FreeBSD 12.3 RELEASE - MySQL - 設定

 クラウディア
1. コンフィグレーションファイルの設定
2. 文字コードを設定
3. 設定のチェック
4. プロンプトを変更する

1. コンフィグレーションファイルの設定

 コンフィグレーションファイルは、

/usr/local/etc/mysql/my.cnf
 です。  編集します。

vi /usr/local/etc/mysql/my.cnf
 デフォルトは以下のように書かれています。
[client]
port                            = 3306
socket                          = /tmp/mysql.sock

[mysql]
prompt                          = \u@\h [\d]>\_
no_auto_rehash

[mysqld]
user                            = mysql
port                            = 3306
socket                          = /tmp/mysql.sock
bind-address                    = 127.0.0.1
basedir                         = /usr/local
datadir                         = /var/db/mysql
tmpdir                          = /var/db/mysql_tmpdir
slave-load-tmpdir               = /var/db/mysql_tmpdir
secure-file-priv                = /var/db/mysql_secure
log-bin                         = mysql-bin
log-output                      = TABLE
master-info-repository          = TABLE
relay-log-info-repository       = TABLE
relay-log-recovery              = 1
slow-query-log                  = 1
server-id                       = 1
sync_binlog                     = 1
sync_relay_log                  = 1
binlog_cache_size               = 16M
expire_logs_days                = 30
default_password_lifetime       = 0
enforce-gtid-consistency        = 1
gtid-mode                       = ON
safe-user-create                = 1
lower_case_table_names          = 1
explicit-defaults-for-timestamp = 1
myisam-recover-options          = BACKUP,FORCE
open_files_limit                = 32768
table_open_cache                = 16384
table_definition_cache          = 8192
net_retry_count                 = 16384
key_buffer_size                 = 256M
max_allowed_packet              = 64M
query_cache_type                = 0
query_cache_size                = 0
long_query_time                 = 0.5
innodb_buffer_pool_size         = 1G
innodb_data_home_dir            = /var/db/mysql
innodb_log_group_home_dir       = /var/db/mysql
innodb_data_file_path           = ibdata1:128M:autoextend
innodb_temp_data_file_path      = ibtmp1:128M:autoextend
innodb_flush_method             = O_DIRECT
innodb_log_file_size            = 256M
innodb_log_buffer_size          = 16M
innodb_write_io_threads         = 8
innodb_read_io_threads          = 8
innodb_autoinc_lock_mode        = 2
skip-symbolic-links

[mysqldump]
max_allowed_packet              = 256M
quote_names
quick

2. 文字コードを設定

 日本語を扱うのであれば、今んとこ(2020年12月15日)、ぜひ、「UTF-8」を使用するべきであるし。  「UTF-8」を使用するのであれば

/usr/local/etc/mysql/my.cnf
 には必ず文字コードの設定を書いておきましょう。

[mysqld]								←	のセクション内に
	・・・
character-set-server            = utf8	←	この1行を追加しておきます。
 変更した場合は

service mysql-server restart
 「mysql」のプロンプトを起動した状態で、下記のように表示されていれば一安心。

mysql> show variables like "chara%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql>
 下記のように表示されるのであれば、文字化けが発生する可能性大なので「my.cnf」を編集して、データベースサーバを再起動しましょう。

mysql> show variables like "chara%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | latin1                           |	←	まずいかも
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | latin1                           |	←	まずいかも
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.46 sec)

mysql>

3. 設定のチェック

 以降、編集したら、それを反映させるには

service mysql-server restart
 で「mysql-server」を再起動するのですが。  編集を失敗していると停止だけして、起動できないことになります。  「apache」の「configtest」みたいなことはできないかなぁ、と思っていたら近いものがありました。  「MySQL で my.cnf のシンタックスチェックを行う方法」を参考にさせていただきました。

/usr/local/libexec/mysqld --verbose --help > /dev/null
 で、設定に問題があればエラーが出力されます。  参考サイトに書いてある通り「> /dev/null」がミソで、これがないと現在の設定状態やらヘルプやら、だらだらと出力されるのですが、標準出力のみリダイレクトしているのでエラーがあればそこだけ出力されます。  試しに [mysqld] セクションに Z という1文字だけの行をいれてやってみます。

$ /usr/local/libexec/mysqld --verbose --help > /dev/null
2018-03-01T13:43:19.324116+09:00 0 [ERROR] unknown option '--Z'
2018-03-01T13:43:19.332076+09:00 0 [ERROR] Aborting
 うむ、上出来。  だがしかし、これ、後述する「validate_password」に関する設定値を記入するとエラーになるという欠点がありますので、ご注意ください。

4. プロンプトを変更する

 プロンプトが

ユーザ名@localhost [(none)]>
 となってて、わたしは前のままがいいのです。

prompt                          = \u@\h [\d]>\_
 の行を削除するなり、コメントアウトするなりすれば

mysql>
 に戻ります。
ハイスピードプランそれがだいじWi-Fiメンズミレット