ユーザ用ツール

サイト用ツール


serverapps:db:mysql

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に記録されている1)

* パスワードは起動時にログに記録されている

»>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のレプリケーションユーザーのパスワード確認方法

  1. スレーブサーバーへログイン
  2. MySQLのデータディレクトリのmaster.infoを確認する

設定

MySQL5.7.1のはまりどころ

パスワードポリシーが厳格になって、定期的に変更しないとパスワードが無効になって突然死亡する2)

# 文字コード設定
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 <username> -p<password> <database> | gzip > /path/to/backup/hoge_`date +%Y_%m_%d`.gz

リストア

gz圧縮されたものをリストア

zcat backupfile.gz | mysql -u <username> -p
mysql -u <username> -p < backupfile.sql

SQLをコマンドラインから直接実行する

# mysql -u <username> -p<password> <database> -e'show tables;'

Adminer

phpMyAdminの代替。

1ファイルで作成されているので設置も簡単です。

設定なんかはこっち→ Adminer

参考

1)
5.7.15
2)
MySQL 5.7.11でFIX
serverapps/db/mysql.txt · 最終更新: 2024/10/03 09:58 by admin