Oracle MySQL Innovation Day 2018 秋
に参加してきました。平日の午後から、夕食休憩を挟んで夜の早めの時間くらいまで、という変則的開催。
参加してみるとなるほど、明るい時間には比較的まじめにしっかりとした話を聞いて、夜枠はどちらかというとコミュニティに寄せた感じなのだな、と納得。当たり前のように両者が融け合う、名構成だったと思います。企画者GJ!
ほんとね、もっと英語聞けるようになりたいって思いますよ、こういう会に出ると。
…
Oracle MySQL Innovation Day 2018 秋
に参加してきました。平日の午後から、夕食休憩を挟んで夜の早めの時間くらいまで、という変則的開催。
参加してみるとなるほど、明るい時間には比較的まじめにしっかりとした話を聞いて、夜枠はどちらかというとコミュニティに寄せた感じなのだな、と納得。当たり前のように両者が融け合う、名構成だったと思います。企画者GJ!
ほんとね、もっと英語聞けるようになりたいって思いますよ、こういう会に出ると。
…
TL;DR
mysql_native_password と
caching_sha2_password の接続コストは数百usくらいしか違わない
mysql_native_password,
caching_sha2_password, sha256_password
それぞれを指定したアカウントを作ります。
CREATE USER yoku0825_native_password IDENTIFIED WITH mysql_native_password BY 'a';
CREATE USER yoku0825_caching_sha2 IDENTIFIED WITH caching_sha2_password BY 'a';
CREATE USER yoku0825_sha256 IDENTIFIED WITH sha256_password BY 'a';
8.0からGRANT ALLしたユーザをSHOW GRANTS FORすると、ALL PRIVILEGESではなく、 実際に付与されている個別の権限が列挙されるようになってた。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'super'@'%';
Query OK, 0 rows affected (0.07 sec)
mysql> SHOW GRANTS FOR 'super'@'%' \G
*************************** 1. row ***************************
Grants for super@%: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,
PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE,
DROP ROLE ON *.* TO `super`@`%`
*************************** 2. row ***************************
Grants for super@%: GRANT …[さらに読む]
8.0からGRANT ALLしたユーザをSHOW GRANTS FORすると、ALL PRIVILEGESではなく、 実際に付与されている個別の権限が列挙されるようになってた。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'super'@'%';
Query OK, 0 rows affected (0.07 sec)
mysql> SHOW GRANTS FOR 'super'@'%' \G
*************************** 1. row ***************************
Grants for super@%: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,
PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE,
DROP ROLE ON *.* TO `super`@`%`
*************************** 2. row ***************************
Grants for super@%: GRANT …[さらに読む]
mysqldが起動できないバグなのか、「 avoid_temporal_upgrade
なんてことすると将来的にサポート対象外だよ」がドキュメントに記載されてないのかどっちだか迷っている。 MySQL
Bugs: #93101: Failed to Populate DD tables when table has
OLD-Style DATETIME column (need Doc) MySQL
5.6からDATETIME型のデータ構造が新しくなった。 日々の覚書: あなたのMySQL 5.6トレンド力をチェックする15の質問 MySQL
5.5とそれ以前で CREATE TABLE したテーブルは8バイトの旧DATETIME型、MySQL
5.6とそれ以降で CREATE TABLE …
MySQL 5.7の時点で既に宣言はされていた。 GROUP BY implicitly sorts by default (that is, in the absence of ASC or DESC designators), but relying on implicit GROUP BY sorting in MySQL 5.7 is deprecated. MySQL :: MySQL 5.7 Reference Manual :: 1.4 What Is New in MySQL 5.7 どういうことが起こるかというと、こう。
$ perl -ML -E 'for (my $n= 1; $n <= 10; $n++) { for (my $m= 1; $m <= 100; $m++) { printf("%d\t%d\n", $n, $m) } }' | sort -R > /tmp/seq
mysql80 165> CREATE TABLE t1 (n int, m int);
Query OK, 0 rows affected (0.05 sec)
mysql80 165> LOAD DATA INFILE '/tmp/seq' INTO TABLE t1;
Query OK, 1000 rows affected (0.09 sec)
Records: 1000 Deleted: 0 Skipped: 0 Warnings: 0
mysql80 165> SELECT * FROM t1 LIMIT 10;
+------+------+
| n | m …[さらに読む]
$ perror 1290
MySQL error code MY-001290 (ER_OPTION_PREVENTS_STATEMENT): The MySQL server is running with the %s option so it cannot execute this statement
要は、「 %s だからそのSQLは実行できないよ」というエラー。
%s
の部分に何が入るかは何パターンかあるけど、基本的にオプションの名前が入るので、SQLを成功させたければ
%s をOFFにしてやれば上手くいくはず。 MySQL 5.7.24 のコードから
ER_OPTION_PREVENTS_STATEMENT を投げるところを引いてみた感じ、あり得る
%s のパターンはたぶんこう。
TL;DR
| version | passwordカラム(CHAR(41) NOT NULL) | authentication_stringカラム(TEXT NULL) | pluginカラム | 認証プラグインの選択 |
|---|---|---|---|---|
| 5.0.96 | パスワードハッシュ | カラムなし | カラムなし | ダイジェスト長 |
| 5.1.73 | パスワードハッシュ | カラムなし | カラムなし | ダイジェスト長 |
| 5.5.62 | パスワードハッシュ | 常に空文字 | 認証プラグイン | … |
TL;DR
mandatory_roles はログイン時に有効化されない、全ユーザーから SET
ROLE できるロール
role@127.0.0.1 は
192.168.0.0 なアカウントにも割り当てができる)
activate_all_roles_on_login = ON
にすると、デフォルトロールも割り当てたロールも mandatory_roles
も全部いっぺんにログイン時に有効になる
| ロールの有効化 | ロールの作成 | ロールの割り当て | 割り当ての解除 | |
|---|---|---|---|---|
| ロール |
SET ROLE … |