ローカル環境にMySQLをインストールしただけの状態ではpasswordの設定が行われてません。
これではセキュリティに問題がありますので、パスワードの設定をしておくことをお勧めします。
そこで今回はpasswordの設定方法(変更方法)とその他に変更をする箇所について解説してみたいと思います。
2つの変更方法
passwordを変更する方法にはパターンがあります。
どちらもコマンドラインを使用しますが、一つ目の方法としてはmysqladminコマンドを使用して設定する方法が挙げられます。
この方法は非常に簡単に設定できる反面、デメリットとしてはログファイルにパスワードが残ってしまいます。
よってセキュリティ上、このやり方ではセキュリティに問題を抱えることになりますので、このやり方はお勧めできません。
二つ目の方法としてはrootユーザーでログインしてから変更する方法です。
この方法ならログファイルにパスワードも残らず変更をかけることが出来ますので、こちらを覚えるようにしましょう。
MySQLのパスワード変更方法
冒頭でも述べていますが、MySQLはインストールした状態のままであればpasswordの設定は一切されていません。
そこでまず、コマンドラインでMySQLにログインし、そこでUPDATEをかけpasswordを変更する必要があります。
passwordの変更には次のコマンドを使用します。
UPDATE mysql.user SET password=PASSWORD('新しいパスワード') WHERE user='root';
UPDATE文を使用することで、テーブルに格納されているユーザーのパスワードを新たに設定更新することが出来ます。
では実際に次のコマンドを見てみましょう。
// まずrootユーザーでMySQLにログイン # mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 18 Server version: 10.4.10-MariaDB mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. //参照するデータベースを指定 MariaDB [(none)]> use mysql; Database changed // 現在使用されているユーザー名とパスワードを確認 MariaDB [mysql]> select Host, User, Password from user; +-----------+------+----------+ | Host | User | Password | +-----------+------+----------+ | localhost | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | pma | | +-----------+------+----------+ 4 rows in set (0.001 sec)
まず最初に、現在使用できるユーザーを全て確認してみました。
インストールしたままの状態ですので、当然passwordはかかっていない状態であることが確認できます。
またユーザーも新規追加していないのでrootしかありません。
ではこの状態からpasswordを設定してみましょう。
コマンドラインでログインしたままの状態で”UPDATE mysql.user SET password=PASSWORD(‘新しいパスワード’) WHERE user=’root’;”を実行します。
またこのコマンドを実行した後で、MySQLに反映させないといけないので、次に以下のコマンドも併せて実行させてください。
FLUSH PRIVILEGES;
このコマンドを実行することで、再起動をかけることなくMySQLに設定の反映をさせることが出来ます。
では早速設定が反映されているかどうかを確認してみましょう。
先ほどと同じく、SELECTを使って一覧検索をかければ設定の確認ができます。
MariaDB [mysql]> select Host, User, Password from user; +-----------+------+-------------------------------------------+ | Host | User | Password | +-----------+------+-------------------------------------------+ | localhost | root | *B3137EF037852054A4B885EB525B8500A78D0D62 | | 127.0.0.1 | root | | | ::1 | root | | | localhost | pma | | +-----------+------+-------------------------------------------+ 4 rows in set (0.001 sec)
表示としてはハッシュ化されていますので設定したパスワードとは違いますが、先ほどとは変わって”Password”の部分が空欄ではなくなっていることが確認できます。
passwordの設定はこれで完了です。
phpMyAdminの設定を変更する
先ほどpasswordの設定は完了しましたが、一つ問題が残っています。
次の画像を見てください。
これはphpMyAdminを使ってブラウザからサーバーを開こうとした際に表示される画面です。
先ほどpasswordを変更したことによって、今度はこちらがエラーとなりました。
よってここでは、このエラーを修正する方法について解説していきます。
phpMyAdminフォルダの中に「config.inc.php」というファイルがあるので見つけてください。
このファイルをエディタで開くとテキストで設定が記述されています。
/*
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg[‘blowfish_secret’] = ”; /* YOU SHOULD CHANGE THIS FOR A MORE SECURE COOKIE AUTH! */
/*
* Servers configuration
*/
$i = 0;
/*
* First server
*/
$i++;
/* Authentication type and info */
$cfg[‘Servers’][$i][‘auth_type’] = ‘config’;
$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ”;
$cfg[‘Servers’][$i][‘extension’] = ‘mysqli’;
$cfg[‘Servers’][$i][‘AllowNoPassword’] = true;
$cfg[‘Lang’] = ”;
/* Bind to the localhost ipv6 address and tcp */
$cfg[‘Servers’][$i][‘host’] = ‘127.0.0.1’;
$cfg[‘Servers’][$i][‘connect_type’] = ‘tcp’;
/* User for advanced features */
$cfg[‘Servers’][$i][‘controluser’] = ‘pma’;
$cfg[‘Servers’][$i][‘controlpass’] = ”;
/* Advanced phpMyAdmin features */
$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
$cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma__bookmark’;
$cfg[‘Servers’][$i][‘relation’] = ‘pma__relation’;
$cfg[‘Servers’][$i][‘table_info’] = ‘pma__table_info’;
$cfg[‘Servers’][$i][‘table_coords’] = ‘pma__table_coords’;
$cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma__pdf_pages’;
$cfg[‘Servers’][$i][‘column_info’] = ‘pma__column_info’;
$cfg[‘Servers’][$i][‘history’] = ‘pma__history’;
$cfg[‘Servers’][$i][‘designer_coords’] = ‘pma__designer_coords’;
$cfg[‘Servers’][$i][‘tracking’] = ‘pma__tracking’;
$cfg[‘Servers’][$i][‘userconfig’] = ‘pma__userconfig’;
$cfg[‘Servers’][$i][‘recent’] = ‘pma__recent’;
$cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma__table_uiprefs’;
$cfg[‘Servers’][$i][‘users’] = ‘pma__users’;
$cfg[‘Servers’][$i][‘usergroups’] = ‘pma__usergroups’;
$cfg[‘Servers’][$i][‘navigationhiding’] = ‘pma__navigationhiding’;
$cfg[‘Servers’][$i][‘savedsearches’] = ‘pma__savedsearches’;
$cfg[‘Servers’][$i][‘central_columns’] = ‘pma__central_columns’;
$cfg[‘Servers’][$i][‘designer_settings’] = ‘pma__designer_settings’;
$cfg[‘Servers’][$i][‘export_templates’] = ‘pma__export_templates’;
$cfg[‘Servers’][$i][‘favorite’] = ‘pma__favorite’;
/*
* End of servers configuration
*/
この中に「$cfg[‘Servers’][$i][‘password’] = ”;」という部分がありますので、こちらに先ほど設定したパスワードを入力して保存してください。
終わりましたらそのままファイルを閉じていただいて構いません。
確認のため、再度phpMyAdminを開いてみましょう。
無事phpMyAdminが開けることが確認できました。
設定は以上です。
まとめ
いかがでしたか?
今回はpasswordの設定方法について解説してみました。
MySQLは初期状態では色々と問題もあるため、まずはじめにパスワードを設定することと、定期的にpasswordを変更する習慣を身に着けておきましょう。