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>
に戻ります。