NetBSD で MySQL をインストールした時にハマった際のTips
目次
はじめに
こんにちは。Aintekの川井です。
NetBSD7.0を運用しているのですが、MySQLを導入しようとして、サクッと設定できなかったので、その時の証跡と共に、その解決策を残します。
事象(なにがあったのか)
pkginでインストール後、mysqlにrootユーザのパスワードを設定しようとしたのですが、インストールしたばかりなのに、rootユーザのパスワードを求められ・・・(まだrootユーザのパスワードを設定していないはずなんですが)
→確か、mysql1017とかそんなパスワードがデフォルトで設定されていたような記憶があるのですが忘れてしまいました・・・知っている人教えて下さい。
とにかくrootユーザの初期パスワードが分からず、後続の設定が一切できませんでした。
追記(2017/8/17):
初回のMySQL起動時に、テンポラリーパスワードが標準出力に出ていました!
(そうそう、これでした。思い出した! )
あとは、以下のコマンドを打って、上記で表示されたパスワードを入力すれば “新規パスワード” に変更できます。
$ /usr/pkg/bin/mysqladmin -h `hostname` \
-u root \
-p password "新規パスワード"
解決方法
具体的には、以下の流れを行うことで対応しました。
- "skip-grant-tables"を設定しmysqlデータベースへのパスワードログインを無効化(パスワード無しでログイン可能に)
- rootユーザでmysqlにログイン
- rootユーザのパスワードを設定
- /usr/pkg/bin/mysql_secure_installation を実行し、よしなに設定
インストールから初期設定までの手順
MySQLのインストールには、pkginを利用します。
pkginからMySQLをインストールし、その後MySQLを設定するという流れで手順を示していきます。
なお、今回利用するNetBSDのバージョンは7.0となります。
pkginのインストール
pkginを利用するためには、pkg_add コマンドでインストールする必要があります。
pkg_addを利用するためには、予めPKG_PATHという環境変数を設定しておく必要があります。
今回PKG_PATHは、以下のようにFTPサーバを設定しました。
$ export PKG_PATH=ftp://ftp.jaist.ac.jp/pub/NetBSD/packages/current-packages/NetBSD/amd64/7.0/All/
$ echo $PKG_PATH
$ ftp://ftp.jaist.ac.jp/pub/NetBSD/packages/current-packages/NetBSD/amd64/7.0/All/
次に以下のコマンドで、pkginをインストールします(rootユーザで実行しています)。
$ pkg_add -v pkgin
pkginのデータベースをアップデートします。
$ pkgin update
以上で、pkginのインストール(及び設定)まで完了しました。
MySQLのインストール
MySQLをインストールしていきます。
まずは、pkginでMySQL関連のパッケージがあるかどうかを確認します。
$ pkgin search msyql
すると、以下のパッケージを見つけることができました。
mysql-server-5.7.19
NetBSDは、pkginでmysql-serverをインストールすると、mysql-clientも合わせてインストールされるので、以下のコマンドでインストールしていきます。
$ pkgin mysql-server-5.7.19
インストール後に、mysql関連のコマンドをコピーします(標準出力に案内が表示されるので、それに従います)。
$ cp /usr/pkg/share/examples/rc.d/mysqld /etc/rc.d/.
mysqlサービスをOS起動時に起動させるため、/etc/rc.confに以下の行を追加します。
mysqld=YES
また、インストールの最後で、標準出力に以下のメッセージが表示されるかと思います。
===========================================================================
$NetBSD: MESSAGE,v 1.1 2016/09/16 06:49:12 adam Exp $
After the tables are set up and the MySQL server is running,
please remember to set a password for the MySQL root user!
This is done by running both:
/usr/pkg/bin/mysqladmin -u root -p password 'new-password'
/usr/pkg/bin/mysqladmin -h `hostname` -u root -p password 'new-password'
The "Enter password:" prompt is asking for the existing password.
As there is no existing password, just press the Return key.
There is a script distributed with MySQL that can help you lock down
an installation. This script has been installed to
/usr/pkg/bin/mysql_secure_installation.
Please see the manual and the MySQL web site for more instructions.
===========================================================================
上記のメッセージを読むと、rootユーザの初期パスワードなんて無いから、エンターキーで進んでね!って見えるのですが、Access Deniedとなってしまいました・・・
MySQLにパスワードなしでログインするための設定
/usr/pkg/etc/my.cnfを設定し、パスワード無しでログインできるようにします。
具体的には、“skip-grant-tables” を設定します。
設定内容は以下のとおりです。
[mysqld]
port=3306
bind-address=127.0.0.1
skip-grant-tables
以上で、パスワード無しでのログイン設定が完了しました。
設定を反映させるために、 以下のコマンドでmysqlサービスを再起動します。
$ sudo /etc/rc.d/mysqld restart
以上で、MySQLでパスワード無しでログインする設定が有効になりました。
rootユーザのパスワードを設定
以下のコマンドを実行し、mysqlにrootユーザでログインしてみます。
$ mysql -u root
無事にログインできたら、以下のコマンドで新規パスワードを設定します。
※"mysql>"はプロンプトです
msyql> use msql ;
msyql> update user set authentication_string=password('新しいパスワード') where User='root' ;
mysql> flush privileges;
なお、クォート(’)は必要なので、注意して下さい。
MySQLの修正(戻し)
/usr/pkg/etc/my.cnfから"skip-grant-tables"を削除し、mysqlサービスを再起動します。
再起動後、先ほど設定したパスワードでログインできることを確かめます。
$ mysql -u root -p
パスワードが求められるので、先ほど設定した"新しいパスワード"を入力します。
問題なくログインできたら、以下のコマンドでmysqlから抜けます。
mysql> exit;
以上で、rootユーザのパスワード設定ができました。
/usr/pkg/bin/mysql_secure_installation の実行
以下のコマンドを実行してMySQLの初期設定を行います。
$ /usr/pkg/bin/mysql_secure_installation
上記コマンド実行後、rootユーザのパスワードが求められるので、"新しいパスワード"を入力し、設定を進めます。
以上。