OSC2018-Tokyo/Fall(オープンソースカンファレンス2018東京秋)に参加してきました。
いつもの通り、日本MySQLユーザ会としてブースを出しつつ、でも結構うろうろしながら他のブースの方ともお話したり、自由で楽しく参加させてもらいました。
東京のOSCは、千葉県在住の身からは「非常に遠い」会場で開催されるので、よほどのモチベーションがなければ参加しない方針だったのですが、今年は
MySQL 8.0 の …
エンジニア以外のメンバーが気軽にデータベースを参照出来るツールは無いかと見てみたら、metabaseは使い勝手が良さそうだなと感じました。
1) アカウントを複数作成出来る
2) グループに分けられる
3) クエリーを使うこともGUIで参照する事も可能
4) Slackやメールとの連携が可能
5) OpenSourceである事。(翻訳に協力しようと考えてます)
6) 管理工数、セットアップが容易
7) ビジネス側のメンバーが容易にグラフで状況を理解する事が可能
8) 非エンジニアでも、SQLを少し学べばカスタマイズ出来る事(日付範囲等)
インストール (CentOS7を利用しています)
Javaのバージョンが要件を満たしていれば、metabase.jarをダウンロードしきて実行するだけ。
[root@GA01 …[さらに読む]
$ mysql80 -h 127.0.0.1 -u yoku0825 --ssl-mode=disabled -p
Enter password:
ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
このエラーになる条件。
-
caching_sha2_passwordプラグインを使っているアカウント
かつ - まだサーバー側にSHA2キャッシュが作られていないアカウント
かつ - サーバーの公開鍵を指定していない非SSLのTCP接続
この条件に合致しているとログインが転けて↑のエラーを食らう。 解決策1.
caching_sha2_password プラグインをやめて
mysql_native_password プラグインを指定する
mysql> ALTER USER yoku0825 IDENTIFIED WITH mysql_native_password BY 'new_password`;
解決策2. …
[さらに読む]TL;DR
-
sql_mode= NO_AUTO_CREATE_USERが指定されている時にCREATE USERせずにGRANT ..で直接ユーザーを作ろうとした -
SET PASSWORD FOR user@host = ..で存在しないユーザーのパスワードを変更しようとした -
mysql.user.pluginのカラムが空文字列のアカウントにGRANTやALTER USERをかけようとした -
mysql.userテーブルにINSERTなりUPDATEなりをした後、FLUSH PRIVILEDGESをしていないのでアカウントとして認識されていない
-
sql_mode= NO_AUTO_CREATE_USERが指定されている時にCREATE USERせずにGRANT ..で直接ユーザーを作ろうとした
嬉し楽しい式インデックス。
PostgreSQLのこれが結構うらやましかった機能がついにMySQLにも! The MySQL 8.0.13 Maintenance Release is Generally
Available | MySQL Server Blog MySQL 5.7からgenerated
columnが入ってそのカラムにインデックスを張ればそれっぽい高速化は実現できたんだけれども、generated
columnは如何せんORMと相性が悪いことがあって(ORMはそのカラムがgeneratedかbasicか特に気にしてくれないけど、generatedなカラムは更新しようとするとエラーになる、など)そういうケースではカラムを定義せずに式インデックスが使えるといいのに…と思っていたのでしたん。
- …
みんなだいすき DEFAULT がついに関数を指定できるようになった。
8.0.12とそれ以前はリテラルのみが指定可能、例外として TIMESTAMP,
DATETIME 型の CURRENT_TIMESTAMP のみだった。
Handling of Explicit Defaults as of MySQL
8.0.13 記法は .. DEFAULT ( expression ) で、
DEFAULT のあとに括弧を入れてから関数なり表現なりを書く。
The MySQL 8.0.13 Maintenance Release is Generally
Available | MySQL Server Blog
に書いてある↓をそのまま試そうとしても、括弧が抜けているので通らない。。
mysql80 40> CREATE TABLE t2 …[さらに読む]
TL;DR
- MySQL Bugs: #92899: Incorrect uniqueness determination with equality symbols を見て思ったことのメモ
- 少なくとも
utf8mb4_0900_ai_ciにとっては'=' = '≠'がTRUE
MySQL 8.0の utf8mb4 のデフォルト照合順序として
utf8mb4_0900_ai_ci というのがあって( default_collation_for_utf8mb4 で多少は変えられる)、これは
kamipoのハハ=パパ問題
を引き起こす照合順序として日本人には知られている(と思う。といいな。広まれ!) で、その
utf8mb4_0900_ai_ci …
TL;DR
- ドキュメントの password_require_current だけ読むとちょっと足りなくて、実際にはこんな判定
if (mysqlスキーマへのUPDATE権限 || CREATE USER権限)
return パスワード確認不要;
else
{
if (global.password_require_currentがON || そのアカウントが mysql.user.Password_require_current = 'Y' になっている)
return パスワード確認必要;
else
return パスワード確認不要;
}
- パスワード確認必要な場合、パスワードを変えるようなステートメントの最後に
REPLACE '元のパスワード'をつける- 対話的に聞かれるわけではない
-
REPLACE…
TL;DR
-
sql_require_primary_key
サーバー変数をONにすると、PRIMARY KEYのないテーブルを作ろうとした時にエラーにできる。
- セッションスコープとグローバルスコープと両方あるやつで、実効値はセッションスコープなので注意。
- ただし、
SET SESSION ..でも一般ユーザーでは値を変更することはできない(sql_log_binとかもそうですね)
- 超便利だ!! 秘伝のタレに入れる時は
looseプレフィックスとかもいいと思うよ!!
取り敢えず基本的な使い方として、0(OFF)と1(ON)の時の動作の違い。
mysql80 9> SELECT …[さらに読む]
MySQL 8.0.13 がリリースされました。
ChangeLog :
MySQL :: MySQL 8.0 Release Notes :: Changes in
MySQL 8.0.13 (2018-10-22, General Availability)
Download:
MySQL :: Download MySQL Community Server
ここ最近の私の興味は GIS 機能ですので、大量の Change Logの中からまずは関連するところだけ。
GIS機能の変更は?
ST_Area() と ST_Validate() …
[さらに読む]