116 件中 61 - 70 件を表示
« 前の 10 件 | 次の 10 件 »
Displaying posts with tag: 8.0 (reset)
MySQLのロール周りのあれこれ

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
[さらに読む]
MySQL 8.0のcaching_sha2_password + 非SSL接続が転ける
$ 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. …

[さらに読む]
MySQL 8.0.13の式インデックス

嬉し楽しい式インデックス。
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なカラムは更新しようとするとエラーになる、など)そういうケースではカラムを定義せずに式インデックスが使えるといいのに…と思っていたのでしたん。

[さらに読む]
MySQL 8.0.13でカラム定義のDEFAULTに関数が指定できるようになった

みんなだいすき 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 …
[さらに読む]
utf8mb4_0900_ai_ciは "=" と "≠" を同じ文字だと思っている

TL;DR

MySQL 8.0の utf8mb4 のデフォルト照合順序として utf8mb4_0900_ai_ci というのがあって( default_collation_for_utf8mb4 で多少は変えられる)、これは kamipoのハハ=パパ問題 を引き起こす照合順序として日本人には知られている(と思う。といいな。広まれ!) で、その utf8mb4_0900_ai_ci

[さらに読む]
MySQL 8.0.13とそれ以降で「パスワード変更の際に今のパスワードを入力させる」オプション

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
[さらに読む]
MySQL 8.0.13の新機能でPRIMARY KEYのないテーブルを作成させない

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ではカラムのリネームに ALTER TABLE RENAME COLUMN 構文が使える

TL;DR

[さらに読む]
innodb_ft_enable_stopword が無効にできなかったはなし

TL;DR

  • innodb_ft_enable_stopword は2018/08/22現在ドキュメントの記載が “GLOBAL” のみになっているけど、実際は “GLOBAL, SESSION” で実効値はセッション側
  • このパラメーターでストップワードを判定させるか否かは CREATE TABLE または ALTER TABLE した時点の session.innodb_ft_enable_stopword に依存する

元ネタはMySQL CasualのSlackでのこの発言。 (文中の引用元リンクがたどれない方は是非とも …

[さらに読む]
MySQL 8.0でLOAD DATA LOCAL INFILEが "ERROR 1148 (42000): The used command is not allowed with this MySQL version" で失敗する時

TL;DR

吊るしのMySQL 8.0で mysql コマンドラインクライアントから LOAD DATA LOCAL INFILE を実行すると転けます。

mysql80 125> LOAD DATA LOCAL INFILE '/tmp/aaa' INTO TABLE t1;
ERROR 1148 (42000): The used command is not allowed with this MySQL version

LODA DATA LOCAL …

[さらに読む]
116 件中 61 - 70 件を表示
« 前の 10 件 | 次の 10 件 »