ユーザ用ツール

サイト用ツール


mysql

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mysql [2018/07/11 00:38] – [MySQL] nullponmysql [2024/01/18 01:41] (現在) – [DDLクエリが終わらない] nullpon
行 5: 行 5:
 ネットの情報は間違いも多い。鵜呑みにせず公式のマニュアルで確認すること。もちろんこのページの情報も鵜呑みにしないこと。きちんとマニュアルで調べる。すべての情報はマニュアルに掲載されている。公式サイト以外でもオライリーの書籍(実践ハイパフォーマンス等)はほぼ無条件で信用してもいいだろう。 ネットの情報は間違いも多い。鵜呑みにせず公式のマニュアルで確認すること。もちろんこのページの情報も鵜呑みにしないこと。きちんとマニュアルで調べる。すべての情報はマニュアルに掲載されている。公式サイト以外でもオライリーの書籍(実践ハイパフォーマンス等)はほぼ無条件で信用してもいいだろう。
  
 +===== DDLクエリが終わらない =====
 +
 +alter tableがなかなか終わらない場合、プロセスリストを見てみよう
 +
 +<code>
 +show processlist
 +
 +or 
 +
 +show full processlist
 +</code>
 +
 +''Waiting for table metadata lock''と出ている場合は、他のプロセスが該当のテーブルにトランザクションを開いているためDDLがロックされている状態。
 +
 +ありがちなのはGUIのデータベースクライアントツールがトランザクションを張っているケース(例えばDBeaverはテーブルを開くだけでトランザクションを作成する)。アプリを閉じましょう
 +
 +===== readonlyが効かない =====
 +
 +<code>
 +set global read_only = 1; 
 +</code>
 +
 +を実行しても書き込みできてしまう。
 +
 +super権限を持っているユーザにはread_onlyは効かない。セキュリティ上の観点からもアプリからはsuper権限を持たないユーザで接続するのをオススメする。
 ===== rootログインできない! ===== ===== rootログインできない! =====
  
 Ubuntu 18.08 + MySQL 5.7で発生。 Ubuntu 18.08 + MySQL 5.7で発生。
  
-認証方法が auth_socket となっており、OSの root ユーザでないとアクセスできないようなっている。sudoすればOK+認証方法がauth_socketとなっており、OSのrootユーザのみMySQLのrootユーザでログイン可能設定されている。なので sudo すればOK
  
     sudo mysql -u root     sudo mysql -u root
行 21: 行 46:
 </code> </code>
  
-なお5.7以降デフォルトのパスワード要件がmedium policyとなっており+なお、認証方法がauth_socket状態では ''sudo mysql_secure_installation'' を実行してrootパスワード設定しても反映されたので上記手順で認証方法を変更する必要があった。
  
-* パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む +==== パスワード要件 ==== 
-* 長さ8文字以上+ 
 +5.7以降、デフォルトのパスワード要件がmedium policyとなっており、 
 + 
 +  * パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む 
 +  * 長さ8文字以上
  
 でないと設定できない。 でないと設定できない。
 +
 +
 ===== データ無いのに非常に遅い ===== ===== データ無いのに非常に遅い =====
 DBサーバが別のとき、接続するとものすごい時間がかかる場合がある。 DBサーバが別のとき、接続するとものすごい時間がかかる場合がある。
行 445: 行 476:
  
 Fulltextインデックスは再構築にも時間がかかるしメンテナンスが死ぬほどめんどくさいのでオススメしない。他の全文検索ライブラリを併用するのがいいだろう。 Fulltextインデックスは再構築にも時間がかかるしメンテナンスが死ぬほどめんどくさいのでオススメしない。他の全文検索ライブラリを併用するのがいいだろう。
 +
 +
 +===== JSON型カラム =====
 +
 +JSONフィールドの値で検索する
 +
 +<code sql>
 +where colName->'$.id' = 1 
 +
 +where JSON_EXTRACT(colName, '$.id') = 1
 +</code>
 +
mysql.1531269534.txt.gz · 最終更新: 2018/07/11 00:38 by nullpon