| 1行目: | 1行目: | ||
==Mysqlクライアント== | ==Mysqlクライアント== | ||
{| class="wikitable" summary="Mysqlクライアント" | {| class="wikitable" summary="Mysqlクライアント" | ||
!説明 | |||
!コマンド | !コマンド | ||
|- | |- | ||
|データベースの作成 || <code>mysqladmin -u root -p create sampledb</code> | |データベースの作成 || <code>mysqladmin -u root -p create sampledb</code> | ||
2019年6月6日 (木) 16:20時点における版
Mysqlクライアント
| 説明 | コマンド |
|---|---|
| データベースの作成 | mysqladmin -u root -p create sampledb
|
| ステータスの表示 | mysqladmin -u root -p status
|
| 稼働状況の表示 | mysqladmin -u root -p status
|
| スレッドリストの表示 | mysqladmin -u root -p processlist
|
| スレッド番号3を kill | mysqladmin -u root -p kill 3
|
| パスワードを変更 | mysqladmin -u root -p password 'new-password'
|
| スレーブ機能を開始 | mysqladmin -u root -p start-slave
|
システム情報
| 説明 | コマンド |
|---|---|
| システム変数の表示 | SHOW STATUS
|
| システム変数の変更 | SET
|
ユーザ管理
| ユーザリストを表示 | SELECT user, host FROM mysql.user;
|
|---|---|
| ユーザの追加 | GRANT ALL ON sampledb.* TO user@localhost IDENTIFIED BY 'passwd';
|
| 権限の付与 | GRANT INSERT, DELETE ON sampledb.* TO user@192.168.1.%;
|
| 権限の取り消し | REVOKE INSERT, DELETE ON sampledb.* FROM user@domain.com;
|
| 権限を表示 | SHOW GRANTS FOR user@localhost¥G
|
| 削除 | DROP USER |
| ユーザ名の変更 | RENAME USER old TO new
|
| ユーザの削除 | DROP USER user@localhost;
|
| 権限の更新 | FLUSH PRIVILEGES;
|
| root でパスワード変更 | SET PASSWORD FOR user@localhost = password('new_passwd');
|
| ユーザでパスワード変更 | SET PASSWORD = password('new_passwd');
|
スタート・アップ
| 初期化 | mysql_secure_installation
|
|---|---|
| ログイン | mysql -u user -p sampledb
|
| セッション情報を表示 | status
|
| auto_increment値の確認 | SHOW TABLE STATUS¥G
|
| auto_increment値のセット | ALTER TABLE hoge AUTO_INCREMENT=3;
|
auto_increment値の初期化
mysql > CREATE TABLE tmp LIKE hoge; ← カラム定義だけ同じテーブルを作成 mysql > CREATE TABLE tmp AS SELECT * FROM hoge WHERE 1=2; ← この書き方もできる mysql > SET @a = 0; mysql > INSERT INTO tmp SELECT @a := @a + 1 AS id, name FROM hoge
* 主キーが削除できない時はその列にインデックスを追加すると削除できるようになる
データベース
| データベースを作成 | リスト表示(S) | 属性変更 | 削除 | CREATE | SHOW | ALTER | DROP DATABAE(S)
|
|---|---|
| データベースを選択 | USE
|
テーブル操作
| テーブルの作成 | CREATE TABLE user (u_id int NOT NULL PRIMARY KEY AUTO_INCREMENT, name char(10) DEFAULT 'hoge' NOT NULL, birth date NOT NULL);
|
|---|---|
| テーブルを作成 | リスト表示(S) | 変更 | 削除 | CREATE | SHOW | ALTER | DROP TABLE(S)
|
| 列名の変更 | ALTER TABLE hoge CHANGE old_name new_name int NOT NULL;
|
| テーブル名の変更 | ALTER TALBE old RENAME new
|
| 列属性の変更 | ALTER TABLE hoge MODIFY name date NOT NULL;
|
| 外部キーの追加・削除 | ALTER TABLE foo ADD CONSTRAINT fkey FOREIGN KEY (a) REFERENCES bar (b);
|
| データを挿入|更新|削除 | INSERT | UPDATE | DELETE
|
| データを取得 | SELECT
|
| SELECTした結果を挿入 | INSERT INTO SELECT
|
| テーブルをロック | ロック解除 | LOCK | UNLOCK TABLES
|
| 属性変更|削除 | ALTER|DROP VIEW |
| 作成したビューを表示 | SHOW CREATE VIEW
|
| リスト表示 | 削除 | SHOW | DROP INDEX |
| ストアドファンクションを作成 | CREATE FUNCTION
|
| ストアドファンクションを表示 | SHOW CREATE FUNCTION
|
| ストアドファンクションの状態を表示 | SHOW FUNCTION STATUS
|
| リスト表示(S)|削除 | SHOW|DROP TRIGGER(S) |
| 停止 | STOP SLAVE |
| トランザクション機能を開始 | START TRANSACTION
|
*外部キーを追加するときは結びつけるカラムが相互に同じ型である事、挿入データが既にある場合は値が全て一致している必要がある
ダンプとリストア
ダンプとリストアには4つの方法がある。
- データファイル群のコピー - 古いディレクトリを tar で圧縮してから新しいディレクトリで展開
- mysqldump による論理バックアップとリストア - テーブル生成とデータ挿入の SQL文の塊として
- XtraBackup による物理バックアップとリストア - Percona社が提供しているオンライン物理バックアップツール。無料ながら非常に高機能
- LVM によるスナップショットとリストア - Linux の LVM機能を利用してバックアップを取る。fdisk や pvcreate などを利用
mysqldump の例:
$ mysqldump -u root sampledb > dump.sql ← ダンプ $ mysql -u root -p -D sampledb < dump.sql ← リストア