MySQLの使い方
MySQLへリモートログインする方法
mysql -u root -p -h 192.168.1.2
-h
オプションでサーバー名やIPアドレスを指定すると
リモートでMySQLにログインできる。
MySQLへユーザーを追加する方法
ローカルユーザーを作成する
CREATE USER aaa@localhost IDENTIFIED BY 'bbb';
aaa
という名前のユーザーを作成。
パスワードをbbb
に設定。
ホストをlocalhost
にすると、ローカルログイン専用のユーザーになる。
(リモートログインはできない)
リモートユーザーを作成する
CREATE USER aaa@'%' IDENTIFIED BY 'bbb';
ホストを%
(ワイルドカード)に設定。
%
の前後には '
(シングルクォーテーション)をつける。
(つけないとエラーになるので注意)
ホストを%
にすると、リモートログインができるユーザーになる。
ユーザーを削除する
DROP USER aaa@localhost;
user@host
を指定してユーザーを削除。
ユーザーの権限を表示する
SHOW GRANTS FOR aaa@localhost;
aaa@localhost
の権限を表示する。
CREATE USER
したばかりのユーザーはデフォルトでUSAGE
という権限だけを持っている。
USAGE
というのは、ログインだけはできるが、何の権限もないユーザー。
権限を追加しないとSELECT
やCREATE TABLE
などのデータベース操作ができない。
ユーザーの権限を設定する
特定のデータベースに対してALLの権限を設定
GRANT ALL ON xxx.* TO aaa@localhost;
aaa@localhost
というユーザーに
xxx
というデータベースの*
(すべてのテーブル)に対して
ALL
(全権限)を与える。
すべてのデータベースに対してALLの権限を設定
GRANT ALL ON *.* TO aaa@localhost;
aaa@localhost
というユーザーに
*
(全データベース)の*
(すべてのテーブル)に対して
ALL
(全権限)を与える。
一部の権限だけを許可する設定
GRANT SELECT, INSERT ON *.* TO aaa@localhost;
SELECT
とINSERT
だけ実行できるようになる。
一部のテーブルだけを許可する設定
GRANT ALL ON xxx.yyy TO aaa@localhost;
xxx
というデータベースのyyy
というテーブルだけ操作できる。
データベースを作成する方法
CREATE DATABASE xxx;
xxx
という名前のデータベースを作成。
データベースを選択
USE xxx;
xxx
というデータベースを操作対象に設定。
テーブル一覧を表示
SHOW TABLES
選択中のデータベースで、テーブル一覧を表示。
テーブルを作成
CREATE TABLE users (id INT AUTO_INCREMENT, name TEXT, PRIMARY KEY (id))
users
という名前のテーブルを作成。
id
とname
というカラムを設定。
id
をプライマリーキーに設定。
システム変数を表示する
SHOW VARIABLES LIKE "chara%";
- 実行結果
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb3 | | character_set_connection | utf8mb3 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8mb3 | | character_set_server | latin1 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.001 sec)
chara
で始まるシステム変数の値を表示。
MySQLで使われている文字コードを確認するために使う。
SHOW VARIABLES;
だけ実行すれば、全システム変数が表示される。
(全部で600個くらい表示される)
SHOW CREATE TABLE
SHOW CREATE TABLE xxx;
xxx
という名前のテーブルを再現するためのcreate tableコマンドを出力する。
開発環境から本番環境へMySQLの構造をコピーするときに使う。
(データはコピーされない)
DESCRIBE
DESCRIBE xxx;
xxx
という名前のテーブルの構造を表示。
SELECT
SELECT * FROM xxx;
xxx
テーブルのデータを表示。
INSERT
INSERT INTO xxx (name) VALUES ('aaa');
xxx
テーブルにレコードを追加。
name
カラムにaaa
という文字を設定。
DROP
DROP DATABASE
DROP DATABASE xxx;
xxx
という名前のテーブルを削除
DROP TABLE
DROP TABLE xxx;
xxx
という名前のテーブルを削除
ALTER TABLE
ALTER TABLE xxx ADD ccc1 INT AFTER ccc2;
xxx
というテーブルで、
ccc2
というカラムの後ろにccc1
というカラムを追加する。
AFTER
を指定しなければ、末尾にカラムが追加される。
コンソールからSQLを実行する方法
mysql -u root -e "SELECT * FROM xxx.yyy;" > result.text
-e
オプションで、コンソールから直接SQLコマンドを実行できる。
>
で出力をファイルに保存している。
USE
データベースを選択する。
SELECT * FROM xxx.yyy;
データベースを選択していない場合、
SELECTなどで、FROM データベース名.テーブル名
のような形式でターゲットを指定する。
USE xxx; SELECT * FROM yyy;
データベースを選択した場合、
SELECTなどで、FROM テーブル名
だけでターゲットを指定できる。
mysqlコマンドでデータベースを指定する
mysql -u root -p xxx < dump.sql
mysql
コマンドの末尾にデータベース名(xxx
)を書くと、使用するデータベースを指定できる。
ファイルからSQLコマンドを一括で実行するとき、データベースの指定がされていないと
No database selected
のようなエラーが出る。