rootユーザーで開発するのはヤバい
Mysql、RDB、セキュリティの知識が皆無な自分は、これまでmysqlを使う際に常にrootユーザーで作業していました。mysqlでユーザーを新規作成するのがめんどくさく、やり方もよくわからなかったからです。
しかし、rootユーザーで作業するのはエンジニアとして無知をアピールしているようなものです。
なぜrootユーザーで開発するのはヤバいのか?
これはセキュリティ的に大きなリスクが2点あります。
リスク①デフォルトのパスワードが空欄になる
まずはこちらをご覧ください。
MySQL サーバーを Unix root ユーザーとして絶対に実行しないでください。 これを行うと、FILE 権限を持つすべてのユーザーが、root としてサーバーにファイルを作成させることができるため (~root/.bashrc など)、非常に危険です。 これを防ぐために、mysqld は --user=root オプションを使用して明示的に指定された場合を除き、root として実行することを拒否します。
Mysqlはデフォルト状態だとrootユーザーのパスワードが空欄になっています。
そのためもしパスワードを変更していなかった場合、誰でもデータベースにアクセスできてしまいます。
対策としては初期設定時に以下の2点を実行します。
- パスワードを設定する
- そもそも外部からrootユーザーへのアクセスを禁止する
ただし、それでもrootユーザーは使うべきではありません。
リスク②rootユーザーは全ての権限を持っている
rootユーザーは全ての権限を持っています。
セキュリティの基本として、権限は必要最低限にするべきです。
例:
- 全てのDBにアクセスできる ✕
- アプリケーションに必要なDBのみアクセスできる ◯
セキュリティインシデントが起きた場合を考えて、被害を最小限にできるように権限設定はしっかり行いましょう。
ユーザーを作成しよう
自分で新しくユーザーを作成して、必要最低限な権限を与えてあげましょう。
ユーザー作成するコマンド
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
権限を与えるコマンド
GRANT ALL ON dbname.* TO 'username'@'localhost';
※権限を与えるコマンドは他にも色々あります。必要最低限になるように設定しましょう
権限設定→ https://qiita.com/shuntaro_tamura/items/2fb114b8c5d1384648aa
もうrootユーザーで開発するのはやめましょう。root、ダメ・ゼッタイ。
参考
https://qiita.com/Iruk_Nuj/items/badb5bf7856ca6936613
https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql-ja