mysql
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| mysql [2018/07/11 00:43] – [rootログインできない!] nullpon | mysql [2026/05/04 10:41] (現在) – [mysqldump] nullpon | ||
|---|---|---|---|
| 行 5: | 行 5: | ||
| ネットの情報は間違いも多い。鵜呑みにせず公式のマニュアルで確認すること。もちろんこのページの情報も鵜呑みにしないこと。きちんとマニュアルで調べる。すべての情報はマニュアルに掲載されている。公式サイト以外でもオライリーの書籍(実践ハイパフォーマンス等)はほぼ無条件で信用してもいいだろう。 | ネットの情報は間違いも多い。鵜呑みにせず公式のマニュアルで確認すること。もちろんこのページの情報も鵜呑みにしないこと。きちんとマニュアルで調べる。すべての情報はマニュアルに掲載されている。公式サイト以外でもオライリーの書籍(実践ハイパフォーマンス等)はほぼ無条件で信用してもいいだろう。 | ||
| + | ===== DDLクエリが終わらない ===== | ||
| + | |||
| + | alter tableがなかなか終わらない場合、プロセスリストを見てみよう | ||
| + | |||
| + | < | ||
| + | show processlist | ||
| + | |||
| + | or | ||
| + | |||
| + | show full processlist | ||
| + | </ | ||
| + | |||
| + | '' | ||
| + | |||
| + | ありがちなのはGUIのデータベースクライアントツールがトランザクションを張っているケース(例えばDBeaverはテーブルを開くだけでトランザクションを作成する)。アプリを閉じましょう | ||
| + | |||
| + | ===== readonlyが効かない ===== | ||
| + | |||
| + | < | ||
| + | set global read_only = 1; | ||
| + | </ | ||
| + | |||
| + | を実行しても書き込みできてしまう。 | ||
| + | |||
| + | 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 mysql -u root | sudo mysql -u root | ||
| 行 21: | 行 46: | ||
| </ | </ | ||
| - | なお、auth_socket の状態では '' | + | なお、認証方法がauth_socketの状態では '' |
| ==== パスワード要件 ==== | ==== パスワード要件 ==== | ||
| 行 27: | 行 52: | ||
| 5.7以降、デフォルトのパスワード要件がmedium policyとなっており、 | 5.7以降、デフォルトのパスワード要件がmedium policyとなっており、 | ||
| - | * パスワードが最低 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->' | ||
| + | |||
| + | where JSON_EXTRACT(colName, | ||
| + | </ | ||
| + | |||
mysql.1531269835.txt.gz · 最終更新: by nullpon