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
のようなエラーが出る。