Closed13

MySQL権限周り

tuzzotuzzo

一旦メモ(あとでしっかりしたスレッド用意)

MySQLの権限周りは業務で意識的に関わらないとあまり触れられないよね。(とても良い学び)

下記のスレッドはMySQL権限周りの素朴な疑問を解消してみた?

tuzzotuzzo

GRANT権限 の中に PROCESS権限 が含む?
PROCESS権限とは?
mysqldumpを実行するユーザー?

tuzzotuzzo

どこのテーブルに対して、readonlyかwriteくらいか?
本番をwrite権限でカジュアルでみるのは・・

tuzzotuzzo
MySQL Dump をする際に、--no-tablespaces オプションを加えると大丈夫のようです。

tabelspaces とは、MySQL 5.6 から加わった機能で、データーベース側で作成されるファイルを任意に指定できる機能のようです。

MySQL :: MySQL 5.7 Reference Manual :: 13.1.19 CREATE TABLESPACE State...
https://dev.mysql.com

5.6 以前から使われている CMS やアプリケーションは一般的に、 tablespaces の指定をしていないと思われるので、tablespaces 情報が出力されなくても問題はありません。

なので、MySQL 5.7 以前から使われている MySQL を使うアプリケーションで、特に指定が無ければ、MySQL Dump 時に --no-tablespaces オプションを加えると良いでしょう。

https://qiita.com/katzueno/items/29d812eb3aafdb23b0bb

tuzzotuzzo
各レベルに応じて権限を設定するには、それぞれ次のように記述します。

グローバルレベル
GRANT ALL ON *.* TO user;
GRANT SELECT, INSERT ON *.* TO user;

データベースレベル
GRANT ALL ON db_name.* TO user;
GRANT SELECT, INSERT ON mydb.* TO user;

テーブルレベル
GRANT ALL ON db_name.table_name TO user;
GRANT SELECT, INSERT ON db_name.mytbl TO user;

カラムレベル
GRANT SELECT (col1), INSERT (col1, col2) ON db_name.table_name TO user;
tuzzotuzzo
mysql -u ユーザ名 -p -D データベース名 -h ホスト -e " select 文とか" > ファイル名.tsv
このスクラップは2021/12/30にクローズされました