====== MySQL ======
===== インストール =====
# pkg_replace -N databases/mysql55-server
===== 起動 =====
/etc/rc.conf
mysql_enable="YES"
# service mysql-server start
==== エラーで立ち上がらない ====
=== Can't open and lock privilege tables ===
2014.05.22 以下のようなエラーで立ち上がらない\\
2014.06.18 治った模様
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
どうやら、pkgでインストールした際にmysql_install_dbが動いていない模様
mysql_install_db --datadir=/var/db/mysql --user=mysql
これをやれば動いた
=== innodb_system data file '/var/db/mysql/ibdata1' is of a different size ===
以下のようなエラーで立ち上がらない\\
The Auto-extending innodb_system data file '/var/db/mysql/ibdata1' is of a different size
innodb関連の設定変更でデータファイル(ibdataxxx)のサイズが変わっている場合に発生。\\
ib_logfile#, ibdata# などを削除します。
ただし、すでにデータが収納されている場合は、先にデータの退避と変更後にimportが必要になりますので**要注意**
===== rootパスワード設定 =====
# mysqladmin -u root password XXXXXXXXXXX
**MySQL5.7.1の罠:**mysqlの最初のログインパスワードがわからない
* ~/.mysql_secretに記録されている((5.7.15))
* パスワードは起動時にログに記録されている
>>>cat /var/log/mysqld.log |grep password
2015-12-17T09:06:57.427343Z 1 [Note] A temporary password is generated for root@localhost: 8#0Ehxxxxxx
===== MySQLのレプリケーションユーザーのパスワード確認方法 =====
- スレーブサーバーへログイン
- MySQLのデータディレクトリのmaster.infoを確認する
===== 設定 =====
**MySQL5.7.1のはまりどころ**\\
パスワードポリシーが厳格になって、定期的に変更しないとパスワードが無効になって突然死亡する((MySQL 5.7.11でFIX))
# 文字コード設定
character-set-server = utf8
# パスワードの寿命
default_password_lifetime = 0
utf-8をDefaultにする。(my.cnf)\\
my.cnfの位置
# mysql --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf /usr/local/etc/mysql/my.cnf ~/.my.cnf
[mysqld]
...
default-storage-engine=INNODB ← INNODBをdefaultに 5.5.5以降不要
#default-character-set = utf8 ← 5.5で廃止されてます
character_set_server = utf8
expire_logs_days = 14 ← LOGの保持期間(ここでは14日間)
[client]
default-character-set=utf8 #clientセクションを追加
# [mysql]
# default-character-set = utf8
# [mysqldump]
# default-character-set = utf8
===== character set 確認 =====
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 | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/localshare/mysql/charsets/ |
+--------------------------+----------------------------+
===== ユーザの確認 =====
mysql> select user,host from mysql.user;
+------+-----------------------+
| user | host |
+------+-----------------------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+
===== バージョン確認 =====
以下のSQLを実行
select version();
===== DBエンジン =====
show engines;
select table_schema, table_name, engine from tables where table_schema = 'テーブル名';
===== バックアップ =====
パイプでつないで圧縮もする
/usr/local/bin/mysqldump -u -p | gzip > /path/to/backup/hoge_`date +%Y_%m_%d`.gz
===== リストア =====
gz圧縮されたものをリストア
zcat backupfile.gz | mysql -u -p
mysql -u -p < backupfile.sql
===== SQLをコマンドラインから直接実行する =====
# mysql -u -p -e'show tables;'
===== Adminer =====
phpMyAdminの代替。
1ファイルで作成されているので設置も簡単です。
設定なんかはこっち→ [[serverapps:apache:adminer|Adminer]]
===== 参考 =====
[[http://nippondanji.blogspot.com/2010/12/mysql-55.html|漢(オトコ)のコンピュータ道:MySQL 5.5新機能徹底解説]]