FreeBSD MySQL インストール

PC-UNIX データベース

FreeBSD に MySQL を設定する手順

前回、Cygwin に MySQL を設定するときは、あまり考えることなくスムーズに設定ができてしまいましたが、本格運用することを前提とした FreeBSD に設定するときは少々手順が異なります。設定メモです。
Linux ユーザーでもインストール先ディレクトリ、設定ファイルの場所、起動プロセスとスクリプトに注意すれば、ほとんど手順的なものは同じになります。

今回のミッション

  • FreeBSD で MySQL をインストールして設定する
まずは、FreeBSD に MySQL をインストール

FreeBSD に MySQL をインストールするときは pkg からインストールしてしまうのが簡単です。

 bash
# pkg install mysql57-server mysql57-client
ネーテ
かつてはオプションを工夫して、カッコツつけてコンパイルするのが主流でしたが、現在ではパッケージの管理の手間からできる限り、デフォルトのまま使いきるのがコツのように思います(実際にはそう簡単にはいきませんけれど)。

FreeBSD で MySQL を起動する手順

FreeBSD で起動スクリプトから MySQL を起動するには、いつもの呪文を rc.conf に書き込んでおく必要があります。

 bash
# echo "mysql_enable=YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/mysql-server start
Starting mysql.

これで普通に MySQL サーバーが起動します。
次に、データベースに接続できるかどうかを確認します。

 bash
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

とパスワードなしでは接続できないと拒否されます。

MySQL の root のパスワード設定の手順

かつての知識(まだFreeBSD 6 とかの時代)に頼り切って、MySQL をインストールすると様々な躓きポイントに出くわします。root で MySQL に初めて繋げたときにパスワードの設定を求められたのは過去の時代なのか、現バージョンのパッケージでは、そうなっていません。Linux 系の OS の場合は、同様のケースではログに root のデータベース初期パスワードが吐かれて、それを確認することで root でアクセスできます。

root パスワードを知っている場合

  • 知っているパスワードでアクセスします

root パスワードを知らない場合

  1. パスワードを探して見つけて、そのパスワードでアクセス
  2. MySQL をセーフモードで起動して、新しくパスワードを設定してアクセス
  3. MySQL をデータベース(データ)ごと消して、再インストール

誰もが2番目の方法を考えると思いますが、まず1番目を検討するのが定石です。

MySQL の root のパスワードはどこにある?

MySQL の管理者パスワードを忘れたときは、システム(FreeBSD)の管理者権限で、"--skip-grant-tables" オプションをつけてセーフモードで MySQL サーバーを起動、root のパスワードを再設定という手順を踏みます。
しかし、新品の FreeBSD と MySQL をセットアップして直後に、いきなりそんな下品なことをやるのはダサすぎて、かっこ悪すぎます。

実は、MySQL の root のパスワードは素のテキストファイルで .mysql_secret に書かれています。このファイルは root 以外は読めなくなっているはずですので、すべて root 権限で処理する必要があります。ここでは sudo で処理するより root でログインしてすべて行っています。

 bash
# cd ~
# cat ~/.mysql_secret
# Password set for user 'root@localhost' at 2020-05-11 06:20:36
(QijM_DwMIOf

上の赤字の部分が、デフォルトのパスワードです。このパスワードで MySQL に root アクセスができるようになります。

兎にも角にも MySQL の初期設定を行う

デフォルトのパスワードは強力な乱数だと思いますが、さすがにアクセスしづらく覚えるのも嫌なので、パスワードも変更するとして設定を進めます。

 bash
# mysql_secure_installation
mysql_secure_installation: [ERROR] unknown variable 'prompt=\u@\h [\d]>\_'
Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: N
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
New password: 12345678 # 新しいパスワードを入れます
Re-enter new password: 12345678 # 新しいパスワードを再度入れます
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) :  Y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :  N
 ... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :  N
 ... skipping.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :  Y
Success.
All done!

これで初期パスワードを「12345678」に更新しました。

設定したパスワードでアクセスできるかどうか確認

 bash
# mysql -u root -p
Enter password: 12345678 # パスワードを入力します。
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.30-log
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
root@localhost [(none)]> SET password=password('12345678');
Query OK, 0 rows affected, 1 warning (0.00 sec)
root@localhost [(none)]> \q
Bye
#

mysql に繋いで root のパスワードを変更するときは、上のように「SET password=password('12345678');」とやります(ここではパスワードを「12345678」に設定)。

ここまでで、今回の小ネタミッション終了です。


関連記事
MySQL 設定
Cygwin で MySQL を速攻セットアップする

Cygwin に MySQL(MariaDB) をセットアップして実行する手順です。 設定環境 CYGWIN_NT-10 ...

続きを見る

-PC-UNIX, データベース
-, ,

© 2021 ネーテルス