nkmtの日記

日常のことをつらつら書きます

mysqlのユーザー管理など設定

mysqlインフラ

2019年5月24日

ユーザー操作

mysqlに接続するためのユーザー作成について下記にまとめます。

ユーザーの作成

CREATE USER ユーザー名 IDENTIFIED BY "パスワード"
CREATE USER user@localhost IDENTIFIED BY "password"

パスワードの変更

SET PASSWORD = "新パスワード" #現在接続しているユーザーのパスワード変更
SET PASSWORD FOR ユーザー名 = "新パスワード"

ユーザー名の変更

RENAME USER 現在のユーザー名 TO 新ユーザー名;
RENAME USER user@localhost TO new_user@localhost;

ユーザーの削除

DROP USER user@localhost;

ユーザの権限
ユーザー権限には下記の表のとおりの種類があります。

権限 レベル 可能な操作
ALL[PRIVILEGES] GDT GRANT OPTION 以外の全ての権限を付与
CREATE GDT データベースの作成およびテーブルの作成が可能
ALTER GDT ALTER TABLEが可能
DROP GDT データベース、テーブル、ビューの削除が可能
SELECT GDTC SELECTの使用が可能
INSERT GDTC INSERTの使用が可能
UPDATE GDTC UPDATEの使用が可能
DELETE GDT DELETEの使用が可能
TRIGGER GDT トリガの作成、削除が可能
CREATE ROUTINE GD ストアドルーチンの作成が可能
EXECUTE GDT ストアドルーチンの起動を有効に可能
CREATE VIEW GDT VIEWの作成が可能
GRANT OPTION T 他アカウントへの権限の付与、削除が可能
USAGE G 全ての権限を与えない設定

上記のレベル詳細をまとめます。
(G) グローバル : 全てのデータベースに適用される
(D) データベース : 特定のデータベース内の全てのオブジェクトに適用される
(T) テーブル : 特定のデータベースの特定のテーブル内のカラムに適用される
(C) カラム : 特定のテーブルのカラムに適用される

ユーザーアカウント権限の確認

SHOW GRANTS FRO アカウント; # 対象アカウントの権限を表示
SHOW GRANTS; # 現在のアカウント権限を表示

ユーザーアカウント権限の付与

GRANT 権限 ON レベル TO アカウント;
レベル
グローバルレベル *.*
データベースレベル db_name.*
テーブルレベル db_name.table_name
GRANT ALL ON *.* TO user@localhost;

ユーザーアカウント権限の削除

REVOKE 権限 ON レベル FROM アカウント;

REVOKE ALL PRIVILEGES , GRANT OPTION FROM user@localhost;

インデックスの設定

CREATE INDEX インデックス名 ON テーブル名;

インデックスの削除

DROP INDEX インデックス名 ON テーブル名;

ユーザーを外部から接続できるように設定

CREATE USER ユーザ名@'接続元IPアドレス' IDENTIFIED BY "パスワード";

ファイルデータの読み込み

csvファイル等のデータを読み込む際にはファイルを特定の場所に置く必要があります。
下記のコマンドによりファイルを置く場所のディレクトリを確認します。

SELECT @@secure_file_priv;

LOAD DATA INFILE 'ファイル名' INTO テーブル名 オプション

LOAD DATA INFILE ファイルのフルパス INTO TABLE テーブル名 FIELDS TERMINATED BY ',';