mita2 database life

主にMySQLに関するメモです

MySQL 8.0 Authentication requires secure connection エラーの件

MySQL 8.0 から デフォルトのパスワードの仕組みが caching_sha2_password に変更されました。 これに関連して、yoku0825 さんが以下のエントリーを掲載してます。 yoku0825.blogspot.com yokuさんのエントリーを抜粋すると: caching_sha2_password プラグ…

MySQL 8.0 の binlog_row_metadata オプションを試す

TL;DR MySQL 8.0 で導入された binlog_row_metadata について調べた 今のところデータ連携用途以外では使うところはなさそう binlog_row_metadata オプションとは何か マニュアルでは以下のように記載されています。 デフォルトはMINIMAL(最小限) ROWベー…

MySQL の クッキーを焼いた

クッキーを焼く MySQL の クッキーを焼いた話です。技術的な話は出てきませんw Anycubic i3 Mega 3D プリンター 高精度 大きい プリンタサイズ 構造物取り易いヒートベッド (ブラック)メディア: 年末年始は、3D プリンタで遊んでました。 3Dプリンタ扱うの…

MySQL テストコードを書いてみる

先日、MySQLをソースからビルドする方法を書きました。今日はテストコードについてのエントリーです。 mita2db.hateblo.jp MySQL のテストコード mysql-test/suite ディレクトリ以下にテストコードが記述されています。 5800以上のテストが記述されています…

CentOS7 で MySQL 8.0 をソースからビルドする

yoku0825さんが、CentOS8 で MySQL 8.0 をビルドする記事を書いていました。 CentOS8でもビルドするために、あれこれインストールしないといけないようです。 yoku0825.blogspot.com CentOS7インストール直後の状態では色々足りない 最近のMySQLはビルドに最…

MySQL ヒストリーに記録されない条件

TL; DR; *IDENTIFIED*:*PASSWORD* にマッチしたクエリ、つまりパスワードを含むクエリはヒストリーに記録されない 環境変数 MYSQL_HISTIGNORE で記録しないクエリを追加指定できる ヒストリーに記録されない時がある mysql コマンド には履歴機能があります…

InnoDB FTSで検索できない文字があるときは innodb_ft_enable_stopword のせいかも

InnoDB FTS シリーズが続きます。今回は innodb_ft_enable_stopword についてです。 mita2db.hateblo.jp mita2db.hateblo.jp TL; DR ngram で、yakitori がヒットしない mysql> SELECT * FROM fts_ngram; +----+----------+ | id | c1 | +----+----------+ |…

Mroonga から InnoDB FTS への乗り換えを考えてみた

このエントリーはMySQL Casual Advent Calendar 2019 の7日目です。 実は、毎年 12 /7 日書いてます。 mita2db.hateblo.jp mita2db.hateblo.jp -- 昨日は、@SHINOHARATTT さんでした。 ポケモンを題材にして論理設計を学ぶ というエントリーでした。楽しく学…

InnoDB FULLTEXT Search の ngram_token_size

ngram_token_size パラメータは InnoDB FTS の ngram パーサーの設定です。ngram_token_size に指定した文字数ごとに文章をトークナイズします。 疑問 ngram_token_size をインデックス作成後から変更すると、どうなるのか? あり得るパターン CREATE INDEX …

MySQL admin_address にワイルドカードは指定不可

先日書いたエントリーについて、 mita2db.hateblo.jp MySQL Weekly で tom__bo さんから頂いた、感想へのフィードバック(と補足)です。 mysql-weekly.hatenablog.com 僕がやりたかったこと 接続あふれしている時でも、DBAは管理者アカウントで接続できるよ…

MySQLで管理用IFを使いつつ特権ユーザをローカルアカウントのみに絞りたい

以前、接続が溢れているとき(too many connectionsエラー発生時)でも接続可能にする Administrative Network Interface(管理NW IF) の概要をブログに書きました。この時は、特権アカウントの接続元との関連は書かなかったのですが、特権アカウントの接続…

日本MySQLユーザ会 望年LT大会2019 と Casual Talks 開催告知

はてなブログに引っ越して、初めての記事です。 先日、MyNA 忘年LT大会に参加してきました。 keny_lala さんが、MySQL クイズやったりしてて、面白かったです。 sakaik さん、企画ありがとうございます。来年もよろしくお願いします! sakaik.hateblo.jp 自…

mita2db メモは、はてなブログに引っ越してきました

諸事情あって、blogger から はてなブログに引越ししました。 MySQL Geek な人たち、はてなブログ民が多い! tmtms.hatenablog.com sakaik.hateblo.jp tombo2.hatenablog.com next4us-ti.hatenablog.com blog.kamipo.net sh2.hatenablog.jp rkajiyama.hatena…

MySQL の 巨大な core ファイル 対策(MySQL 8.0〜)

昨日記事では core ファイルを圧縮する方法を紹介しました。 昨日の記事では、OSの機能(kernel.core_pattern)を使って対応する方法を紹介しました。 mita2db.hateblo.jp MySQL 8.0からは、MySQLの機能(設定)を利用して、巨大なcoreファイルを抑制するこ…

MySQL の 巨大な core ファイル 対策(~MySQL 5.7)

約1ヶ月ぶりのブログです。--core ファイルとはプロセスのメモリを丸ごとファイルにダンプしたものです。core ファイルをgdb等のデバッガで解析することで、プロセスが落ちた原因を探ることができます。MySQL では以下のように設定することで、mysqldが落ち…

MySQL table_encryption_privilege_check パラメータの挙動

前回の記事ではdefault_table_encryption パラメータについて触れました。 default_table_encryptionでは、ENCRYPTION句を省略した場合の挙動を制御することができます。今回は、table_encryption_privilege_check パラメータについて確認してみます。 この…

MySQL Casual Talks vol.12 で発表してきた

MySQL Casual Talks vol.12 で発表してきた。 MySQLの容量とか圧縮まわり from Satoshi Mitani MySQLに入れるとしたらどれぐらいの容量が目安かアンケートしたりしてみました。 結果は、結構ばらけました。。。もうちょっと傾向が出ることを期待してたのです…

MySQL default_table_encryption パラメータの挙動

MySQL 8.0 で default_table_encryption パラメータが追加されてました。「テーブルの暗号化をデフォルトで有効にするオプションかな?」と思って、CREATE TABLEしてみるも変わらず・・・マニュアル見ると、データベースとテーブルスペースに効くと書いてあ…

MySQL Technology Cafe #5 に参加してきた

前回の、MySQL Technology Cafe #4 に続き、#5 に参加してきました。タイムテーブル 時間内容登壇者18:00-18:25受付-18:25-18:30はじめにMySQL GBU18:30-19:15MySQL 8.0 の便利機能とSQL標準MySQL テクニカルアナリスト 木村明治 氏19:30-19:40MySQL Binlog …

プロシージャの中身はPerconaだとスロークエリログに落ちる

プロシージャの中身のクエリはスロークエリログに落ちない の続き。Vanilla MySQLだとプロシージャの中身がログに落ちませんが、Percona Server ではスロークエリログが拡張されていて、ログに落ちます。log_slow_sp_statements で出力の有無を設定します。…

プロシージャの中身のクエリはスロークエリログに落ちない

とあるMySQLのデータベースで、性能劣化した疑いのあるプロシージャがありました。プロシージャには複数のSELECTやINSERTが含まれています。どのSQLが遅かったか突き止める方法はあるのでしょうか?プロシージャに含まれている、各SQLはスロークエリログに落…

サーバサイドプリペアドステートメントはperformance_schemaに記録されない

あるクエリがperformance_schemaに記録されなかった。原因を調べていて1つ記録されない条件を見つけたのでメモ。まず、問題ないパターン。mysql> SELECT NOW();+---------------------+| NOW() |+---------------------+| 2019-07-30 10:40:47 |+----------…

MySQL 8.0 はダウングレードできない

8.0.16でCHECK制約がサポートされました。CHECK制約については、「yoku0825さんのブログ」や「MySQL Server teamのブログ」で詳しく解説されてます。さて、「8.0.16でCHECK制約を設定したテーブルをCHECK制約に対応していない8.0.15で操作したらどうなるだろ…

MySQL Technology Cafe #4 に参加してきた

MySQL Technology Cafe #4 に参加してきました。State of the Dolphin - What's new in MySQLOracleのプリセールスのえらい人、Philipさんによる、MySQL 8の新機能のオーバビューでした。Document Store、Build in HA / InnoDB Cluster、GISの改良、InnoDB D…

MySQL 8の新機能 RESOURCE GROUP と 権限

RESOURCE GROUPはざっくり言うと、セッションごとに利用できるCPUを制限したり固定できる機能です。以前、試した記事はこちら。意図せず、CPUリソースを制限されてしまうことのないよう、RESOURCE GROUPと権限の関係を調べてみました。結論RESOURCE GROUPを…

MySQLの管理者用ネットワークインタフェース(administrative network interface)を試す

MySQL 8.0.14 から DB管理者用 に追加でネットワークインタフェースを設けることができるようになりました。このように、接続あふれを起こしているときでも、管理者用IFであれば接続できます。$ mysql -P3306 -uroot -pPass%word123 -h db01ERROR 1040 (HY00…

mysql_config_editor は シャープを含むパスワードをうまく扱えない

mysql_config_editor は ログイン情報を管理するためのコマンドです。~/.mylogin.cnf に難読化されたIDやパスワード、接続先の情報が記録されます。$ strings .mylogin.cnf#Xu*|難読化されているので、中身を確認するには、my_print_defaults コマンドで表示…

MySQL 8の新機能 LATERAL句によるSQLチューニング

MySQL 8.0.14でLATERAL句がサポートされました。一瞬、LITERALに空目しましたが、LATERAL(側面)でした。LATERAL句を試してみます。サンプルとしてこのようなテーブルを扱います。従業員の一覧(employees)と、各従業員の特定の期間の月額給与(salaries)…

SHOW PROCESSLISTのHostがパーセントになるケース

プロシージャでDEFINERを指定して作成すると、Hostの覧が%になる。以下詳細。まず、通常のケース。Id 37のセッションは正しく root が localhost から接続していると表示される。mysql> SELECT CONNECTION_ID( );+------------------+| CONNECTION_ID( ) |+-…

mysql コマンドを使ってシェルスクリプトを綺麗に書くコツ

mysql コマンドは -e で実行するSQLを指定できる。セミコロンで区切れば複数のSQLを同時に実行することもできる。$ mysql -e 'select 1; select 2'+---+| 1 |+---+| 1 |+---++---+| 2 |+---+| 2 |+---+-e を複数指定して、これでもいける。複数行に分けて書…