サイドバーの「Django ドキュメント検索」というプレースホルダの入った検索では、Django ドキュメント (Django 2.1) の公式サイト内を検索できます
MySQL 5.7 で sudo 無し root ログイン [Ubuntu]

目次

MySQL 5.7 で sudo 無しで mysql クライアントを root ユーザに接続する方法について。ついでにインストール直後に root のパスワードを設定する方法についても書いておく。

はじめに

MySQL 5.7 では、インストール直後の root ユーザは管理者権限でないとログインできない。すなわち、下記のように sudo が必要となる。(RedHat 系なら su - する)

$ sudo mysql -u root -p

本番サーバでは一般ユーザが DB の root にアクセスできるのは好ましくないので、この動作は理にかなっている。root はサーバ管理者のみが扱うことにして、別途 DB 操作用のユーザ (devuser 等) を作成するのが良い。

ただし、開発 PC 上では、ローカルでの使用を前提として、root 接続するよう環境を設定してあることもある。既存のプロジェクトがたくさんあったりすると、いちいち新しいユーザで接続するようにパラメータを変えるのも面倒なので、一般ユーザのまま root で接続できると便利。

方法

sudo 無しで root 接続 (ローカルに限定すべき) するには下記のようにする。

1.  一旦 sudo で root にログインする。
※ パスワード不明でログインできない場合は、下記[root の初期パスワードが不明な場合]参照

$ sudo mysql -u root -p 

2. root の認証方法を変更する。
※ 下記 {PW} は、root パスワードで置き換える事

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{PW}';
mysql> FLUSH PRIVILEGES;

※念のため、別のターミナルを開いて sudo 無しでログインできるか確認してから exit; すること。

これで、sudo 無しで mysql クライアントを接続できる。

$ mysql -u root -p

おまけ: root の初期パスワードが不明な場合

MySQL 5.7 では、インストール時にパスワードを聞いてこない。初回の root ログインでは下記いずれかを行う。

1. mysql_secure_installation を実行する。(こちらが本来のやり方)

$ sudo mysql_secure_installation 

上記を実行して質問に答えて行けば良く、基本的にはすべて Yes で良いと思うが、最初の VALIDATE PASSWORD plugin だけは、パスワードの文字制限が不要なら No としておく。(後からはずす方法は未調査)

2. skip-grant-tables を設定する。
/etc/mysql/my.cnf の [mysqld] セクションに skip-grant-tables を指定するとパスワード無しでログインできる。

[mysqld] skip-grant-tables

上記設定をしてからサーバ再起動

$ sudo server mysql restart

ログインはパスワード無しで

$ mysql -u root

参考

MYSQL 5.7 ROOT LOGIN WITHOUT SUDO

低価格なのに高速・多機能・高セキュリティ 月額400円(税別)から最大容量100GB WordPress専用高速サーバー Z.com WP
おすすめの記事