Closed13
MySQL権限周り

一旦メモ(あとでしっかりしたスレッド用意)
MySQLの権限周りは業務で意識的に関わらないとあまり触れられないよね。(とても良い学び)
下記のスレッドはMySQL権限周りの素朴な疑問を解消してみた?

GRANT権限とは?
→
ユーザーを作成できる権限?
アカウントに権利を与える事を可能とは具体的にどんな権限?

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

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

これはなぜ?上のほうが実行できない。

グローバルとデータベースレベルの権限(これは参照できるテーブル設定?)
GRANTはまた違う属性の権限よね?

MySQL 8以降、GRANTコマンドを使用して(暗黙的に)ユーザーを作成することはできなくなりました。代わりにCREATEUSERを使用し、その後にGRANTステートメントを続けます。

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 オプションを加えると良いでしょう。

各レベルに応じて権限を設定するには、それぞれ次のように記述します。
グローバルレベル
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;

mysqldump

mysql -u ユーザ名 -p -D データベース名 -h ホスト -e " select 文とか" > ファイル名.tsv

mysql コマンドオプションまとめておく
このスクラップは2021/12/30にクローズされました