TL;DR
| version | passwordカラム(CHAR(41) NOT NULL) | authentication_stringカラム(TEXT NULL) | pluginカラム | 認証プラグインの選択 |
|---|---|---|---|---|
| 5.0.96 | パスワードハッシュ | カラムなし | カラムなし | ダイジェスト長 |
| 5.1.73 | パスワードハッシュ | カラムなし | カラムなし | ダイジェスト長 |
| 5.5.62 | パスワードハッシュ | 常に空文字 | 認証プラグイン | … |
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 … |
$ 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 プラグインを使っているアカウント
この条件に合致しているとログインが転けて↑のエラーを食らう。 解決策1.
caching_sha2_password プラグインをやめて
mysql_native_password プラグインを指定する
mysql> ALTER USER yoku0825 IDENTIFIED WITH mysql_native_password BY 'new_password`;
解決策2. …
[さらに読む]
嬉し楽しい式インデックス。
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
utf8mb4_0900_ai_ci にとっては '=' =
'≠' がTRUE
MySQL 8.0の utf8mb4 のデフォルト照合順序として
utf8mb4_0900_ai_ci というのがあって( default_collation_for_utf8mb4 で多少は変えられる)、これは
kamipoのハハ=パパ問題
を引き起こす照合順序として日本人には知られている(と思う。といいな。広まれ!) で、その
utf8mb4_0900_ai_ci …
TL;DR
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
SET SESSION .. でも一般ユーザーでは値を変更することはできない(
sql_log_bin とかもそうですね)
loose プレフィックスとかもいいと思うよ!!
取り敢えず基本的な使い方として、0(OFF)と1(ON)の時の動作の違い。
mysql80 9> SELECT …[さらに読む]
TL;DR
ALTER TABLE t1 CHANGE a b int
.. とかやらないといけなかったのが、 ALTER TABLE t1 RENAME COLUMN a
TO b でデータ型とか気にせずにいけるようになっていた
…
[さらに読む]TL;DR
innodb_ft_enable_stopword は2018/08/22現在ドキュメントの記載が
“GLOBAL” のみになっているけど、実際は “GLOBAL, SESSION” で実効値はセッション側
CREATE TABLE または
ALTER TABLE した時点の
session.innodb_ft_enable_stopword に依存する
元ネタはMySQL CasualのSlackでのこの発言。 (文中の引用元リンクがたどれない方は是非とも …
[さらに読む]