1. コンフィグレーションファイルの設定
コンフィグレーションファイルは、「/usr/local/etc/mysql/my.cnf」です。
編集します。
vi /usr/local/etc/mysql/my.cnf
デフォルトは以下のように書かれています。
# $FreeBSD: head/databases/mysql57-server/files/my.cnf.sample.in 414707 2016-05-06 14:39:59Z riggs $
[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. 文字コードを設定
日本語を扱うのであれば、2018年現在、ぜひ、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>
に戻ります。