9行目: 9行目:
|<code>SET</code> || システム変数の変更
|<code>SET</code> || システム変数の変更
|}
|}
==起動==
{| class="wikitable" summary="スタート"
|-
!コマンド
!説明
|-
|<code>mysql_secure_installation</code> || 初期化
|-
|<code>mysql -u user -p sampledb</code> || ログイン
|-
|<code>status</code> || セッション情報を表示
|-
|<code>SHOW TABLE STATUS¥G</code> || auto_increment値の確認
|-
|<code>ALTER TABLE hoge AUTO_INCREMENT=3;</code> || auto_increment値のセット
|}
===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
* 主キーが削除できない時はその列にインデックスを追加すると削除できるようになる


==ユーザ管理==
==ユーザ管理==

2019年6月28日 (金) 16:43時点における版

システム情報

コマンド 説明
SHOW STATUS システム変数の表示
SET システム変数の変更

起動

コマンド 説明
mysql_secure_installation 初期化
mysql -u user -p sampledb ログイン
status セッション情報を表示
SHOW TABLE STATUS¥G auto_increment値の確認
ALTER TABLE hoge AUTO_INCREMENT=3; auto_increment値のセット

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

* 主キーが削除できない時はその列にインデックスを追加すると削除できるようになる


ユーザ管理

コマンド 説明
SELECT user, host FROM mysql.user; ユーザリストを表示
GRANT ALL ON sampledb.* TO user@localhost IDENTIFIED BY 'passwd'; ユーザの追加・権限付与
GRANT INSERT, DELETE ON sampledb.* TO user@localhost; 権限付与
REVOKE INSERT, DELETE ON sampledb.* FROM user@localhost; 権限の取り消し
SHOW GRANTS FOR user@localhost¥G 権限を表示
FLUSH PRIVILEGES; 権限の更新
CREATE/DROP USER user@localhost; ユーザを作成/削除
RENAME USER old_name TO new_name; ユーザ名の変更
DROP USER user@localhost; ユーザの削除
SET PASSWORD FOR user@localhost = password('new_passwd'); パスワード変更(rootで操作)
SET PASSWORD = password('new_passwd'); パスワード変更(ユーザで操作)

データベース

データベースを作成 | リスト表示(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つの方法がある。

  1. データファイル群のコピー - 古いディレクトリを tar で圧縮してから新しいディレクトリで展開
  2. mysqldump による論理バックアップとリストア - テーブル生成とデータ挿入の SQL文の塊として
  3. XtraBackup による物理バックアップとリストア - Percona社が提供しているオンライン物理バックアップツール。無料ながら非常に高機能
  4. LVM によるスナップショットとリストア - Linux の LVM機能を利用してバックアップを取る。fdisk や pvcreate などを利用

mysqldump の例:

$ mysqldump -u root sampledb > dump.sql    ← ダンプ
$ mysql -u root -p -D sampledb < dump.sql    ← リストア

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