![MySQL 5.7 で sudo 無し root ログイン [Ubuntu]](https://jade.alt-area.jp/wp-content/uploads/2018/05/cbb968236bf2404dc2d2714bbcaba0e9_s.jpg)
目次
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