Linux初心者~MySQLコマンド~

システムLinux, MySQL

はじめに

よくMySQLを使うのですが、すぐに忘れたりすることを備忘録的にまとめた。
もし、誤った内容があればご指摘お願いします。

Linux初心者~MySQLコマンド~
Linux初心者~MySQLコマンド~

コマンド

基本操作

ログイン

$ mysql -u ユーザ名 -D DB名

データベース操作

一覧表示

mysql > show databases;

選択

mysql> use DB名;

作成

mysql> create database if not exists DB名 default character set utf8;

削除

mysql> drop database DB名;

テーブル操作

一覧表示

mysql> show tables;

create文表示

mysql> show create table テーブル名;

情報表示

mysql> desc テーブル名;

カラム一覧表示

mysql> show columns from テーブル名;

作成

mysql> create table DB名.テーブル名(id int, name varchar(20));

名前変更

mysql> alter table テーブル名 rename to テーブル名;

カラム追加

mysql> alter table テーブル名 add name varchar(255);

アカウント操作

確認

mysql> select User,Password,Host from mysql.user;

権限確認

mysql> show grants for 'ユーザ名'@'localhost';

登録

mysql> CREATE USER 'ユーザ名'@'localhost' idenitified by 'パスワード';

パスワード設定

mysql> SET PASSWORD FOR 'ユーザ名'@'localhost'=PASSWORD('パスワード');
mysql> SET PASSWORD FOR 'ユーザ名'@'localhost.localdomain'=PASSWORD('パスワード');
mysql> SET PASSWORD FOR 'ユーザ名'@'127.0.0.1'=PASSWORD('パスワード');
mysql> SET PASSWORD FOR 'ユーザ名'@'::1'=PASSWORD('パスワード');

権限付与

mysql> grant all privileges in *.* to 'ユーザ名'@'ホスト名';
mysql> grant all privileges in *.* to DB名.テーブル名 to 'ユーザ名'@'ホスト名';
mysql> grant select,update,insert,delete on DB名.テーブル名 to 'ユーザ名'@'ホスト名';

リカバリー

リストア

$ mysql -u ユーザ名 -pパスワード -D DB名 --default-character-set=binary < バックアップファイル名

リストア(サーバー間)

$ mysql -h ホスト名 -P ポート番号 -u ユーザ名 -p < /tmp/dump.sql

DUMP

$ mysqldump -u ユーザ名 -pパスワード -D DB名 テーブル名 --default-character-set=binary > 出力ファイル名

DUMP(サーバー間)

mysqldump -h ホスト名 -u ユーザ名 -p -B DB名 > /tmp/dump.sql

SQL文

基本構文

  • select結果を縦表示
mysql> select * from テーブル名 limit 1\G
  • テーブルのcreate文を確認
mysql> show create table テーブル名;
  • テーブルのindexを確認
mysql> show index from テーブル名;
  • レコード数(Group ByしてCountしたい)
mysql> select count(distinct カラム名) from テーブル名 where カラム名 = '';
  • レコードのロック
mysql> select * from テーブル名 where id = ** limit 1 for update;
  • CASE文
CASE WHEN テーブル名.カラム名=値 THEN 'ON' ELSE 'OFF' END as エリアス
  • ファイル実行
mysql> file /home/ユーザ名/hoge.sql
  • チューニング
mysql> explain select * from テーブル名 where id = **;
  • プロセス確認(実行中SQLの確認)
mysql> show processlist;
mysql> show full processlist;
  • プロセス削除(実行中SQLの停止)
mysql> kill 10;

トラブル

肥大化したテーブルの掃除対応(データ削除)

データが肥大化しているので、少しずつ削除するべし
where句の条件はなるべく負荷がかからないindexのカラムを指定するべし

select * from テーブル名 where id = 1000;
select count(*) from テーブル名 where id <= 1000;
delete from テーブル名 where id <= 1000;

その他

結果をファイル出力

結果をファイルへ出力する

SELECT フィールド名 FROM テーブル名 INTO OUTFILE 'ファイル名'
(例)
SELECT フィールド名 FROM テーブル名 INTO OUTFILE '/tmp/result.dump'

(補足)
・secure_file_priv で指定のディレクトリ以外はエラーとなる
・アカウントにファイル権限がないとエラーとなる

UTについて
UTの日常

当ブログの管理者UT(プロフィール)です。
無理せず投稿をモットーに頑張っています。なので、更新頻度は低いです。


ブログを読んで頂きありがとうございます。
もし少しでも気に入って下さった方の中で、「応援してあげてもいいよ」という方がいらっしゃいましたら、下記よりご支援をお願いいたします。
Amazonギフト券(Eメールタイプ Amazonベーシック)

メールのあて先はut.1029.amazon@gmail.comです。
金額は空白欄に適当に(15円から)書きこんで下さい。(あらかじめ入っている金額はAmazonの設定なので気になさらないでください)

応援いただけるとすごく嬉しいですm(_ _)m

Amazonギフトでのご支援をお願いします。

フォローしてね!

システムLinux, MySQL