小技プログラミング

MySQLコマンド一覧(逆引きリファレンス)

良く利用するMySQLコマンドのまとめです。
【環境】MySQL5.5

MySQLコマンド一覧
ログイン ①コマンドプロンプトで以下を入力
mysql -u root -p
②次にパスワードを聞かれます、未設定の場合は何も入力せずに[Enter]キーを押します。
ユーザの確認 SELECT Host,User,Password FROM mysql.user;

ユーザ情報はデータベースmysqlのuserテーブルに格納されています。
ユーザ作成 INSERT INTO mysql.user SET user='ユーザ名', password=password('パスワード'), host='ホスト名';

MySQLのユーザは、ホスト名とペアで認識されます。
ホスト名"localhost"は一般にネットワークで使用される"localhost"の意味ではなく、UNIXソケットで接続するという意味です。
したがって、'ユーザ名'@'サーバのホスト名 or IPアドレス'となります
※ホスト名を省略した場合、localhostを除く全てからのアクセスが許可されます。
省略されたホスト名を指定する場合は 'ユーザ名'@'%' と指定。
スーパーユーザを作成 以下の構文でどのホストからもアクセスできる完全なスーパーユーザを作成できるようになります。
注意したいのは、他ホストからのアクセス許可は勿論の事、localhost のアクセス許可も与えてあげなければなりません。with grant optionを付け加えると、他のユーザの権限を書き換えることができるようになりますので管理者ユーザを作成するときに用います。

mysql> GRANT ALL PRIVILEGES ON *.* TO 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO '上記と同じユーザ名'@'%' IDENTIFIED BY '上記と同じパスワード' WITH GRANT OPTION;
コマンド完了時に以下のコマンドで、mysqlの権限テーブルから権限の再読み込みを行います。
FLUSH PRIVILEGES;
ユーザのパスワードを設定・更新 MySQLのユーザーにパスワードを再設定する場合は、ログイン後に以下のコマンドを実行します。
mysql>UPDATE mysql.user SET password=PASSWORD('新しいパスワード') WHERE user='ユーザ名';
ユーザに権限を設定 以下を実行することで既存のユーザにDBとTableへの権限を付与できます。
mysql>GRANT ALL ON DB名.TABLE名 TO 'ユーザ名'@'ホスト名';
以下のコマンドで、mysqlの権限テーブルから権限の再読み込みを行います。
FLUSH PRIVILEGES;

※存在しないユーザに権限付与した場合、同時にユーザも作成されます。
今回はALL権限を付与していますが、もっと詳細な設定をすることも出来ます。

----------- 設定する事が出来る権限リスト -----------
[ALL] 全権限
[CREATE] データベース・テーブルの作成権限
[CREATE USER] ユーザの作成権限
[DROP] データベース・テーブルの削除権限
[SELECT] テーブルの参照権限
[INSERT] テーブルのレコード挿入権限
[UPDATE] テーブルのレコード更新権限
[DELETE] テーブルのレコード削除権限
[EXECUTE] ファンクション・ストアドプロシージャの実行権限
[SHOW DATABASES] データベースの一覧取得権限
[SHUTDOWN] MySQLのシャットダウン実行権限
ユーザの権限を確認 現在ログイン中のユーザ権限を確認します。
SHOW GRANTS;

ユーザを指定する場合。
SHOW GRANTS FOR 'ユーザ名'@'ホスト名';
ユーザの権限を削除 対象ユーザのデータベースに対する権限を削除します。
mysql> REVOKE ALL ON DB名.TABLE名 FROM 'ユーザ名'@'ホスト名';

※全てのDB及びホスト名の無いユーザの場合は以下のようにします。
mysql> REVOKE ALL ON *.* FROM 'ユーザ名'@'%';

以下のコマンドで、mysqlの権限テーブルから権限の再読み込みを行います。
FLUSH PRIVILEGES;
ユーザの削除 DELETE FROM mysql.user WHERE user='ユーザ名' AND host='ホスト名';
匿名ユーザを削除 ユーザ名が特定できない匿名ユーザを削除するには以下のコマンドを実行します。
DELETE FROM mysql.user WHERE user='';
MySQLの文字コード確認 MySQLのコマンドラインで以下を実行
show variables like 'character_set%';

※MySQLのデフォルト文字コードはLatin1になっていると思います。
他の文字コードを使用する場合は~/mysql/bin/my.iniで設定変更する必要があります。
↓utf8に変更する場合は赤字のように変更します。
[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8
使用可能文字コードの確認 使える文字コードは、SQLコマンドラインで↓を実行すると解ります。
SHOW CHARACTER SET;
データベースの作成 create database データベース名 character set 文字コード;
DB名を test 文字コードをutf-8にする場合は↓のようにする。
【例】
CREATE DATABASE test CHARACTER SET utf8;

※MySQL5.5での確認情報、DB名は大文字で作成しても自動で小文字で作成されるようです。
またDB名に「-」(ハイフン)を利用する場合は、「`」(バッククォート)で文字列を囲む必要があります。(バッククォートの出し方はキーボードの種類などにもよりますが、Shiftキー+キーで入力する事が出来ます。)
CREATE DATABASE `db-test` CHARACTER SET utf8;
データベースの文字コード確認 データベースの文字コードの確認方法。
SHOW CREATE DATABASE データベース名;
データベースの文字コード変更 既にデータベースを作成済みで文字コードがLatin1のまま。
という時は↓でデータベースの文字コードを変更できます。
ALTER DATABASE データベース名 DEFAULT CHARACTER SET 文字コード;
データベースの確認 SHOW DATABASES;
データベースの削除 DROP DATABASE データベース名;
対象データベースの切り替え CONNECT データベース名;
テーブルの作成 CREATE TABLE テーブル名(カラム名 カラムの型情報,カラム名 カラムの型情報,・・・・・,PRIMARY KEY (カラム名))CHARACTER SET utf8 COLLATE utf8_general_ci;

テーブル名にハイフンを含む場合はバッククォートでテーブル名を囲みます
【例】
CREATE TABLE `tbl-test`(user_id int not null,name varchar(255),PRIMARY KEY (user_id))CHARACTER SET utf8 COLLATE utf8_general_ci;
テーブル一覧の表示 SHOW tables;
テーブルの定義を表示 DESC テーブル名;
テーブルの文字コード確認 ※テーブル関係のコマンドは、対象のデータベースに接続してから行います。
show table status from データベース名;
テーブルの削除 DROP TABLE テーブル名;

DB名を指定して削除する場合
DROP TABLE db_name.tbl_recruit;
DB名にハイフンを含む場合はバッククォートでDB名を囲みます。
DROP TABLE `db-name`.tbl_recruit;
作成済みテーブルにカラムを追加 ALTER TABLE テーブル名 ADD カラム名 カラムの型情報;
この場合、最後尾にカラムが追加されます。

カラムの挿入位置を指定する事もできます。
例えば、tbl_test テーブルの code というカラムの後に name というカラムをvarchar(255)で追加したい場合は下記のようにします。
【例】
ALTER TABLE tbl_test ADD name varchar(255) AFTER code;
テーブル名の変更 ALTER TABLE テーブル名 RENAME AS 新テーブル名;
MySQLの終了 QUIT;