MySQL Parameters を拡張した

これは「MySQL アドベントカレンダー 2019」と「富士通クラウドテクノロジーズ アドベントカレンダー 2019」の4日目の記事です。

qiita.com

qiita.com

MySQL の各バージョン間のパラメーターの違いを比較できる MySQL Parameter というページを去年公開したんですが、それが何故か割と好評だったみたいで今年の4月に MySQL Community Contributor Award Program 2019 というのにノミネートされたりもしました。

blogs.oracle.com

それを独自ドメイン化したり、いろいろ追加したりしたので、それについて書きます。

独自ドメイン化

今まで GitHub Pages のデフォルトのドメイン https://tmtm.github.io/mysql-params で公開していたのですが、手持ちのドメインのサブドメインの https://mysql-params.tmtms.net に変更してみました。 サブドメイン名をリポジトリ名と同じにしてみましたが、別にその必要はありません。

まず mysql-params.tmtms.net レコードを CNAME tmtm.github.io で登録します。

tmtms.net ゾーンはニフクラDNSで管理しているので、ニフクラのコンパネから tmtms.net のゾーン管理で mysql-params レコードを作ります。簡単。

f:id:tmtms:20191123211349p:plain

次に GitHub のリポジトリで、「Settings」の下の方に「GitHub Pages」があるので、そこにドメイン名を設定するだけです。お手軽。

f:id:tmtms:20191123204255p:plain

今までの https://tmtm.github.io/mysql-params にアクセスすると、ちゃんと https://mysql-params.tmtms.net にリダイレクトされます。 相対パスやクエリパラメータも保ったままリダイレクトされるので便利。

HTTPS もチェックボックスをチェックするだけ。簡単。チェックできるようになるまで時間が掛かりますが。

いろいろ追加

今まで mysqld のパラメーターだけにしか対応していなかったのですが、mysql コマンドにも対応しました。

mysqld https://mysql-params.tmtms.net/mysqld/?vers=5.0.96,5.1.72,5.5.62,5.6.46,5.7.28,8.0.18

mysql https://mysql-params.tmtms.net/mysql/?vers=5.0.96,5.1.72,5.5.62,5.6.46,5.7.28,8.0.18

あと、Status, Charset, Collation, Privilege にも対応してみました。 これらは項目の有無がわかるだけですが。

Status https://mysql-params.tmtms.net/status/?vers=5.0.96,5.1.72,5.5.62,5.6.46,5.7.28,8.0.18

Charset https://mysql-params.tmtms.net/charset/?vers=5.0.96,5.1.72,5.5.62,5.6.46,5.7.28,8.0.18

Collation https://mysql-params.tmtms.net/collation/?vers=5.0.96,5.1.72,5.5.62,5.6.46,5.7.28,8.0.18

Privilege https://mysql-params.tmtms.net/privilege/?vers=5.0.96,5.1.72,5.5.62,5.6.46,5.7.28,8.0.18

https://mysql-params.tmtms.net/ にアクセスするとメニューを表示するようになってますが、

f:id:tmtms:20191124113607p:plain

過去のURLとの互換のため、https://tmtm.github.io/mysql-params?vers=8.0.11,8.0.18&diff=true のようにクエリパラメータがあったら mysqld のページにリダイレクトするようにしてあります。

mysqld と mysql のパラメータは、/usr/local/mysql にインストールした後に --no-defaults --help -v オプションで実行した出力から得ています。

Status, Charset, Collation は SHOW GLOBAL STATUS, SHOW CHARSET, SHOW COLLATION の結果です。

Privilege は DESC mysql.user のカラム名に _priv がついてるものを取り出して、変換しています(Create_tmp_table -> CREATE TEMPORARY TABLE など)。 PROXY 権限は mysql.user テーブルには載ってないので、mysql.proxies_priv テーブルの有無を見てるような感じです。

権限は結構増えてるような印象があったのですが、5.0 の頃と比べても意外とそんなに増えてなかったですね。

f:id:tmtms:20191130150808p:plain

見た目にはこだわりないのでCSSは最低限でデザインがアレですが、よろしければご利用ください。

[追記] 2020-01-28

MySQL 8.0 で動的パラメータがかなり増えてました。それも反映したので今見たらもっと多いです。 動的パラメータは GRANT ALL でユーザー作って、それを SHOW GRANTS した結果から取り出してます。