4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Mysql入門】rootユーザーで開発はやめよう

Last updated at Posted at 2022-09-25

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

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?