こんにちは、新米エンジニアが忘備録として書き溜めていきます。
知識が増えたらリライトします。
SQL 文でよくお世話になってるサイト
ログイン
mysql -u {ユーザー名} -p
確認系
データベース一覧確認
show databases;
データベースに入る
use {対象DB名}:
テーブル一覧
対象データベースに入っているなら
show tables;
もしくは
show tables from {対象データベース名};
テーブルの中身
SELECT * FROM {テーブル名};
適当なテーブルとカラム指定して表示 、区切りは「,」
limit 5 は5行まで表示
select {カラム名} from {テーブル名} limit 5;
例:mysql> select id,provider,bucket from test_table limit 5;
ユーザー一覧
select user, host from mysql.user;
対象ユーザーの権限確認
SHOW GRANTS FOR {対象ユーザー名}@{対象ホスト名};
例:mysql> SHOW GRANTS FOR root@localhost;
認証プラグイン確認
SELECT User, Host, Plugin FROM mysql.user;
対象ユーザーに関する情報を確認
select * from mysql.user where user='{ユーザー名}'\G
現在の接続ユーザーを確認
select user(), current_user();
作成系
データベース作成
https://www.javadrive.jp/mysql/database/index1.html
CREATE DATABASE {データベース名};
テーブル作成
https://www.javadrive.jp/mysql/table/index1.html
create table {テーブル名}({カラム名} {データ型} {オプション})
例:mysql> create table testtable(id int, name varchar(10));
データ挿入
INSERT INTO {テーブル名}(カラム名) VALUES ('値');
例:mysql> INSERT INTO testtable(name) VALUES ('りんご');
カラム挿入
ALTER TABLE {テーブル名} ADD COLUMN {カラム名} {データ型};
例:mysql> ALTER TABLE testtable ADD COLUMN stock INT;
ユーザー作成
create user {希望のユーザー名}@{希望のホスト名} identified by '希望のパスワード';
削除系
データベース削除
drop database {データベース名};
テーブル削除
drop table {テーブル名};
カラム削除
ALTER TABLE {テーブル名} DROP COLUMN {カラム名};
ALTER TABLE testtable DROP COLUMN stock;
ユーザー削除
drop user {ユーザー名}@[{ホスト名};
変更系
ユーザーの権限変更
https://www.javadrive.jp/mysql/user/index5.html
https://www.javadrive.jp/mysql/user/index6.html
db_name内の全ての操作を許可する
例:mysql> GRANT ALL ON db_name.* TO {ユーザ名};
全てのデータベースの全ての操作を許可する
例:mysql> grant all ON *.* TO 'root'@'192.168.0.%';
db_name内の SELECT 権限を許可(検索、表示等、INSERT もいける)
例:mysql> GRANT SELECT, INSERT ON db_name.* TO {ユーザ名};
対象ユーザーの認証プラグイン変更
ALTER USER {ユーザ名}@{ホスト名} IDENTIFIED WITH mysql_native_password BY '{パスワード}';
認証プラグインを「caching_sha2_password」から「mysql_native_password」に変更する場合
例:mysql> ALTER USER test@localhost IDENTIFIED WITH mysql_native_password BY 'password';
設定反映
flush privileges;
抜け出す
exit;
もしくは
Ctrl + D
個人的なメモ
USAGE権限について
USAGE権限はグローバルレベルでのみ指定が可能な権限で、
この権限を設定すると何も権限が無いことになります。
mysql> show grants for test@localhost;
+------------------------------------------------------------------------+
| Grants for test@localhost |
+------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `test`@`localhost` | |
+------------------------------------------------------------------------+
1 rows in set (0.00 sec)