MySQL 8.0 で GIS の機能が本格的になった(測地系の概念が入った)ことをきっかけに、位置情報的なものに興味を持った私です。最近はもう、MySQLの機能とは関係ないところで*1、緯度経度がどうやって決められているかとか、地図作るのにどうやって正確に場所を特定したり写真を上手に補正したりするんだろうという所に興味を持ったり、蘊蓄を語りたくなるポイント(地図学の聖地と呼んでいます)を訪問して密かに感動してみたり、勝手に盛り上がっています。 …
[さらに読む]TL;DR
-
information_schema.tables
(SHOW TABLE STATUS
はここから値を持って生きている)の値は information_schema_stats_expiry 秒間更新されない - なので
SET SESSION information_schema_stats_expiry = 0
とかするとほぼ今まで通りの挙動になる - See also, MySQL Bugs: #91038: AUTO_INCREMENT does not increase automatically
空っぽのテーブルを用意する。
mysql80 111566> SHOW TABLE STATUS\G
*************************** 1. row ***************************
Name: t1
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 0 …
[さらに読む]
MySQL 8.0.14 から DB管理者用 に追加でネットワークインタフェースを設けることができるようになりました。
このように、接続あふれを起こしているときでも、管理者用IFであれば接続できます。
$ mysql -P3306 -uroot -pPass%word123 -h db01
ERROR 1040 (HY000): Too many connections
# 3307の管理者用IFに接続
$ mysql -P3307 -uroot -pPass%word123 -h db01
mysql>
利用するには、admin_port と admin_address
を設定します。ポート番号(admin_port)だけでなく、LISTENするIPアドレス(admin_address)も指定する必要があります。
[mysqld]
admin_address=db01
admin_port=3307
admin_address を省略したり、ワイルドカードを使うことはできないようです。
…
MySQL 8.0.14 から DB管理者用
に追加でネットワークインタフェースを設けることができるようになりました。
このように、接続あふれを起こしているときでも、管理者用IFであれば接続できます。
$ mysql -P3306 -uroot -pPass%word123 -h db01
ERROR 1040 (HY000): Too many connections
# 3307の管理者用IFに接続
$ mysql -P3307 -uroot -pPass%word123 -h db01
mysql>
利用するには、admin_port と admin_address
を設定します。ポート番号(admin_port)だけでなく、LISTENする …
TL;DR
- MySQL 8.0.16 についに CHECK制約 が実装された
-
NOT ENFORCED
なんてオプションが “MySQLっぽい” - ちなみにCHECK制約の追加はオンラインDDL不可、引っぺがすのはできる
最初のFeature Requestから15年、ついにMySQL 8.0.16にCHECK制約が実装された。
アルファベットしか入ってほしくない val
カラムに対して、ひらがなの “さん”
とかが入力されるのを制限できる、みたいなヤーツ。 …
最近、メールで「MySQL Lossless Semi-Synchronous Replication」について質問されることがありました。この質問への答えは多くの人にとって有益であると考えたため、回答をこのブログ記事に書きたいと思います。回答を読めば、トランザクションのコミット、準同期レプリケーション、MySQLのクラッシュリカバリ、ストレージエンジン(InnoDB)クラッシュリカバリの内部挙動について理解できるでしょう。同時に、私がこれまで見聞きしてきたいくつかの誤解についても糾したいと思います。まずはそれら誤解の一つから始めましょう。
…
[さらに読む]
mysql_config_editor は ログイン情報を管理するためのコマンドです。
~/.mylogin.cnf に難読化されたIDやパスワード、接続先の情報が記録されます。
$ strings .mylogin.cnf
#Xu*|
難読化されているので、中身を確認するには、my_print_defaults コマンドで表示する必要があります。
$ my_print_defaults client -s
--user=root
--password=Pass
--host=localhost
さて、このコマンドなんですが、シャープを含む文字列をうまく扱えないバグがあります。
Pass#word123 というパスワードが Pass になってしまっています。
シャープは設定ファイルではコメントを示します。
…
mysql_config_editor は ログイン情報を管理するためのコマンドです。
~/.mylogin.cnf に難読化されたIDやパスワード、接続先の情報が記録されます。
$ strings .mylogin.cnf
#Xu*|
難読化されているので、中身を確認するには、my_print_defaults コマンドで表示する必要があります。
$ my_print_defaults client -s
--user=root
--password=Pass
--host=localhost
さて、このコマンドなんですが、シャープを含む文字列をうまく扱えないバグがあります。
Pass#word123 というパスワードが Pass になってしまっています。
シャープは設定ファイルではコメントを示します。
…
リリースノートを読んでみる
英語の勉強もかねてちょっとずつ読んでみる。
Account Management Notes
DROP ROLE権限について
> Previously, users who had the DROP ROLE privilege could use the DROP ROLE statement to drop locked or unlocked accounts. 以前は、DROP ROLE権限を持っていたユーザーはこのDROP ROLEステートメントを使用してロックまたはロックされていないアカウントを削除できました。 > Now, users who have the DROP ROLE privilege can use DROP ROLE only to drop accounts that are locked 現在、DROP ROLE 権限を持つユーザーは、ロックされているアカウントを削除するためだけに使用できます > (unlocked accounts are presumably user accounts used to log in to the server and not just as roles). …[さらに読む]
とうとう来ました、待望のバージョンが!
僕はdocker-composeで遊んでるのでYAMLに
mysql_8.0: image: mysql:8.0.16
と書いて再起動しただけでできましたが、中の人が
— 🐬🍣🍻 (@RKajiyama) April 25, 2019
と教えてくれたリンク先にも上がっていますので、公式が8.0.16になるまではリンクのほうで試してみると良いかと思います。
(⇒4/25 …
[さらに読む]