STRICT_TRANS_TABLESが暗黙のデフォルトになったことが俺の中で有名なMySQL 5.7ですが、MySQL
5.7.8でまたちょっと変更になるらしい。
MySQL :: MySQL 5.7 Reference Manual :: 5.1.7
Server SQL Modes
5.7.4から5.7.7の間までは、STRICT_{TRANS|ALL}_TABLESは
"5.6までのSTRICT_{TRANS|ALL}_TABLES" +
"ERROR_FOR_DIVISION_BY_ZERO" + "NO_ZERO_DATE" +
"NO_ZERO_IN_DATE" でした。
これが5.7.8からもとに戻ります。STRICT_TRANS_TABLESは5.6までのSTRICT_TRANS_TABLESと同じ効果を持つようになり、同時に暗黙のデフォルトにERROR_FOR_DIVISION_BY_ZERO
, NO_ZERO_DATE, NO_ZERO_IN_DATEが追加されて、動作としては5.7.7までと同じです。
…
昨日の 日々の覚書: MySQL 5.7では迂闊にperformance_schemaをOFFするとSHOW
STATUSが使えない の派生バージョン。
MySQL 5.7.8以降、show_compatibility_56=
0が暗黙のデフォルトになり、SHOW
VARIABLESとかはinformation_schemaではなくperformance_schemaを見に行くようになる。performance_schema.*_variablesテーブルにSELECT権限がないとSHOW
VARIABLESは転ける。
さて…レプリケーションスレーブを作ろうと思った時、どんな権限を持ったユーザーを作るか。
俺ならこうだ。
mysql> CREATE USER replicator;[さらに読む]
Query OK, 0 rows affected (0.07 …
オンラインで色々なDDL処理が出来るのは、サービス提供側も、利用者も、DBAとしても
非常に便利な機能かと思います。MySQLは4.1からUnicode対応していたので、
10年弱程利用してますが、Online DDLが利用可能になるまでは、
夜中のユーザーが少ない時間にテーブル定義を変更していたりする事も多々ありました。
MySQL5.6以降のオンラインDDLはそういったメンテナンス対応の方には、非常に便利で有難い機能かと思います。
オンライン処理可能かどうかは、14.11.1. オンライン DDL の概要で確認する事が出来ます。
手元で簡単に確認したい場合は、以下のオプションで処理を指定して確認する事が可能です。
…
動作は5.7.7で確認していて、 5.7.8で暗黙のデフォルトがOFFになるって書いてある のでやってみた。
MySQL 5.7.6から show_compatibility_56 というサーバー変数が追加されている。
SHOW {GLOBAL|SESSION} STATUS, SHOW {GLOBAL|SESSION} VARIABLES
は今まで内部的にinformation_schemaのテーブルを叩いていた。これをperformance_schemaのテーブルを叩くように変えるのがこのパラメーター。
ONだとinformation_schemaから、OFFだとperformance_schemaから情報を取ってくる。
mysql57> SELECT @@version;[さらに読む]
+--------------+
| …
MySQL HTTP Plugin確認 | variable.jp
[データベース,パフォーマンス,運用] を写経して失敗したので補足メモ。
2. my.cnfをマニュアルを見て編集
myhttp_default_mysql_user_name = http_sql_user
myhttp_default_mysql_user_passwd = sql_secret
myhttp_default_mysql_user_host = 127.0.0.1
* myhttp_default_mysql_user_nameは BASIC認証に成功した後に
myhttpプラグインからMySQLに接続しに行くときに使うユーザー名。暗黙のデフォルトは "root"
* myhttp_default_mysql_user_passwdは BASIC認証に成功した後に
myhttpプラグインからMySQLに接続しに行くときに使うパスワード。暗黙のデフォルトは ""(空文字列)
ということでこの2つは、`3. …
TL;DR
default_password_lifetime= 0 を秘伝のmy.cnfに入れておくつもり。
MySQL :: MySQL 5.7 Reference Manual :: 5.1.4
Server System Variables
パラメーターの意味は読んで字のごとく、「最後にパスワードが更新されてからこの期間が経つと、パスワードをEXPIREする」。暗黙のデフォルトは360で、単位は日。つまり何もいじらないと、新規作成したユーザーは360日後にパスワードがEXPIREされてアプリが止まる。。
mysql57> CREATE USER yoku0825 IDENTIFIED WITH mysql_native_password AS '*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA';[さらに読む]
Query OK, 0 rows affected (0.03 sec)
mysql57> SELECT user, host, plugin, …
日々の覚書: MySQL 5.7.6でCREATE
USERせずにGRANTステートメントを叩くとワーニング で、結局どうすればいいのか全く書いてなかったので書き直し。
* パスワード未設定のユーザーをGRANTで作成できなくなった。
* CREATE USERでユーザー作ってからGRANTする。
mysql57> GRANT ALL ON db.* TO grant_style@localhost; -- ユーザー未作成, パスワード未指定のGRANTが転ける[さらに読む]
ERROR 1133 (42000): Can't find any matching row in the user table
mysql57> CREATE USER create_style@localhost; -- パスワード未指定のCREATE USERは通る
Query OK, 0 rows affected (0.00 sec)
mysql57> GRANT ALL ON db.* TO create_style@localhost; -- ユーザーが存在するとGRANTが通る
Query OK, 0 rows affected …
主にバグの再現確認に使う用途。yumでもいいからクリーンな状態のCentOS 6.6にMySQL
5.7を入れたいときの。
TL;DR
コマンドはこれ。
$ sudo yum install -y https://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
$ sudo yum install -y --enablerepo=mysql57-community-dmr mysql-community-server
$ sudo service mysqld start
$ sudo grep password /var/log/mysqld.log
$ mysql -uroot -p
1. MySQL :: Download MySQL Yum
Repository からCentOS 6.x用(いや、本当はRHEL/Oracle
Linux用のだけど)のrpmパッケージをインストールする(と、2015/06/01現在では↓の5つのリポジトリーが登録される)
| repository
| enabled |
…
A server could have its socket file taken over by a second server
listening on different TCP/IP port but the same socket file. The
socket file also would be unlinked by normal shutdown of the
second server. To avoid this, the server now uses a lock file
with the same name as the socket file and a .lock suffix. (For
example, /tmp/mysql.sock has a lock file of
/tmp/mysql.sock.lock.) The lock file contains the process ID of
the server process that created the socket file. (Bug
#17286856)MySQL :: MySQL 5.7 Release Notes :: Changes in
MySQL 5.7.5 (2014-09-25, Milestone 15)
やっぱり誰しも、--socketの設定間違えてUNIXソケットつぶしたことありますよねわかりますん! orz
$ bin/mysqld --no-defaults --initialize --datadir=/tmp/mysql1[さらに読む]
2015-05-10T17:04:32.148319Z 0 [Warning] …
MySQL5.6でONLINE
DDLが強化されて、テーブルの変更も多くのケースではオンラインで処理出来る為、深夜のメンテナンスが必須では無くなりました。
もちろんサーバーの負荷やユーザーの利用状況によっては、やはり深夜の時間帯でのメンテナンスが安心だというケースもまだあるとは思いますが、
オンラインでユーザーへのサービスを停止せずに、メンテナンスが出来るという選択肢は非常に重要だと思います。
ONLINE DDL 5.6での拡張(参考)
http://thinkit.co.jp/story/2013/11/19/4670/page/0/1
5.7ではまた追加で、ONLINEでのメンテナンスが出来る選択肢が増えています。
…