ユーザ用ツール

サイト用ツール


mysql

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mysql [2018/07/11 00:43] – [rootログインできない!] nullponmysql [2026/05/04 10:41] (現在) – [mysqldump] 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>
  
-なお、auth_socket の状態では ''sudo mysql_secure_installation'' を実行してrootパスワード設定しても反映されないようなので上記手順で認証方法を変更する必要があった。+なお、認証方法がauth_socketの状態では ''sudo mysql_secure_installation'' を実行してrootパスワード設定しても反映されなかったので上記手順で認証方法を変更する必要があった。
  
 ==== パスワード要件 ==== ==== パスワード要件 ====
行 27: 行 52:
 5.7以降、デフォルトのパスワード要件がmedium policyとなっており、 5.7以降、デフォルトのパスワード要件がmedium policyとなっており、
  
-* パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む +  * パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む 
-* 長さ8文字以上+  * 長さ8文字以上
  
 でないと設定できない。 でないと設定できない。
行 370: 行 395:
 テーブル名は小文字統一などのルールを定めて開発すべき。 テーブル名は小文字統一などのルールを定めて開発すべき。
  
-===== mysqldump ===== 
-データベースhogeをダンプ 
-  $ mysqldump hoge -u fuga -p -q > db_hoge_dump.sql 
-テーブル構造のみ 
-  $ mysqldump hoge -u fuga -p -q --no-data > db_hoge_creata_table.sql 
  
-文字化けする場合は、データベースの初期文字コードと同じ値を指定する。例えばデフォルトがlatin1ならば… 
-  $ mysqlnump hoge -u fuga -p -q --default-character-set=latin1 > db_hoge_dump.sql 
- 
-ただし、--default-character-setを設定するとダンプデータでset names latin1が実行されているため、ダンプデータを実際の文字コードに置き換える必要がある。よりベターなのは、データベースにデフォルト文字コードを変更する事。 
  
 ===== ランダムに一行取得 ===== ===== ランダムに一行取得 =====
行 451: 行 467:
  
 Fulltextインデックスは再構築にも時間がかかるしメンテナンスが死ぬほどめんどくさいのでオススメしない。他の全文検索ライブラリを併用するのがいいだろう。 Fulltextインデックスは再構築にも時間がかかるしメンテナンスが死ぬほどめんどくさいのでオススメしない。他の全文検索ライブラリを併用するのがいいだろう。
 +
 +
 +===== JSON型カラム =====
 +
 +JSONフィールドの値で検索する
 +
 +<code sql>
 +where colName->'$.id' = 1 
 +
 +where JSON_EXTRACT(colName, '$.id') = 1
 +</code>
 +
mysql.1531269835.txt.gz · 最終更新: by nullpon