カテゴリー
IT MySQL Web サーバー

MySQL 8.0 の起動直後に最初に実行するコマンド

MySQL 8.0 を起動して最初に実行するべきコマンドがあります。このコマンドを実行するとrootパスワードの変更や不要なアカウント・データベースの削除が実行されます。

以下のコマンドを実行します。(パスはMacPortsの場合)

/opt/local/lib/mysql8/bin/mysql_secure_installation

まず最初にrootのパスワードを入力します。

最初のrootのパスワードは、MySQLの初期化時に、ランダムな文字列が自動的に生成されています。詳しくは以下の記事を参照して下さい。

MySQL8.0のインストール時に自動的に作成されるパスワード
Enter password for user root: 

ログインをするとまず最初にパスワードの設定を行います。

The existing password for the user account root has expired. Please set a new password.

ユーザーアカウントrootの既存のパスワードの有効期限が切れています。 新しいパスワードを設定してください。

MySQLのインストール時に作成されたパスワードは有効期限切れになっているので、新しいパスワードを入力して下さい。

New password: 

確認用にもう一度入力して下さい。

Re-enter new password: 

次に、パスワードの強度を高めるか確認されます。

VALIDATE PASSWORD COMPONENT 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 component?
Press y|Y for Yes, any other key for No: 

VALIDATE PASSWORD COMPONENTを使用して、パスワードをテストし、セキュリティを向上させることができます。
パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。
VALIDATE PASSWORDコンポーネントをセットアップしますか?
yかYを押したらYes、他のキーを押したらNo。

互換性を維持するならNを押して下さい。意味がよく分からないなら、Nです。

Nを押した場合は、rootのパスワードを更新する必要があるはずです。(必要ないかもしれませんが、しておくのが無難です)

Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : 

rootに既存のパスワードを使用します。
rootのパスワードを変更しますか?

次に、匿名ユーザーを削除するか聞かれます。これは通常Yです。

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.

デフォルトでは、MySQLインストールには匿名ユーザーが含まれているため、ユーザーアカウントを作成しなくても誰でもMySQLにログインできます。
これはテストのみを目的としており、インストールを少しスムーズにすることを目的としています。
実稼働環境に移行する前に、それらを削除する必要があります。

次に、rootユーザーによるログインをlocalhostだけに限定するか聞かれます。これは通常はYです。

Normally, root should only be allowed to connect from 'localhost'. 
This ensures that someone cannot guess at the root password from the network.

通常、rootは「localhost」からの接続のみを許可する必要があります。
これにより、誰かがネットワークからルートパスワードを推測できないようになります。

次に、testというデフォルトで作成されているデータベースを削除するか聞かれます。これはどちらでもいいです。必要になったら作ればいいので、Yでいいと思います。

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.

デフォルトでは、MySQLには「test」という名前のデータベースが付属しており、誰でもアクセスできます。
これもテストのみを目的としているため、実稼働環境に移行する前に削除する必要があります。

最後に、上記の設定を即時で反映するか聞かれます。通常はYです。

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

特権テーブルを再ロードすると、これまでに行ったすべての変更がすぐに有効になります。

以下に全文を掲載します。

phpbeginners@MacBookAirM1:~/ $ /opt/local/lib/mysql8/bin/mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 

The existing password for the user account root has expired. Please set a new password.

New password: 

Re-enter new password: 

VALIDATE PASSWORD COMPONENT 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 component?

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: 

Re-enter new password: 
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) : y
Success.

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! 

カテゴリー
IT MySQL Web サーバー

MySQL 8.0 が初期化できない(失敗する)

MySQL 8.0のインストール時に、以下のコマンドを入力してMySQLを初期化します。

sudo /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql

ところが、失敗する場合があります。

2020-12-31T04:19:51.070483Z 0 [System] [MY-013169] [Server] /opt/local/lib/mysql8/bin/mysqld (mysqld 8.0.22) initializing of server in progress as process 65161
2020-12-31T04:19:51.071361Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2020-12-31T04:19:51.071367Z 0 [ERROR] [MY-013236] [Server] The designated data directory /opt/local/var/db/mysql8/ is unusable. You can remove all files that the server added to it.
2020-12-31T04:19:51.071409Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-12-31T04:19:51.071510Z 0 [System] [MY-010910] [Server] /opt/local/lib/mysql8/bin/mysqld: Shutdown complete (mysqld 8.0.22)  Source distribution.

何らかの理由で、データディレクトリが残っているためです。以下のようなコマンドで、データディレクトリを移動しましょう。

sudo mv /opt/local/var/db/mysql8 /opt/local/var/db/_mysql8

カテゴリー
IT MySQL Web サーバー

MySQL 8.0 は、rootのパスワードがランダムに作成されます

MySQL 8.0 では、安全のためインストールする毎にrootのパスワードをランダムな文字列で自動的に作成します。

MySQL 8.0をインストールすると、次のようなメッセージが表示されます。(以下はMacPortsでの例)

mysql8-server has the following notes:
If this is a new install you might want to run:

$ sudo /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql
$ sudo port load mysql8-server
$ /opt/local/lib/mysql8/bin/mysql_secure_installation

The first command creates the necessary files for the MySQL database service.
(Remember to make a note of the auto-generated root password from this step.)
The second command starts the MySQL service.
The last command helps to improve the security of your running MySQL instance.

Once enabled, the MySQL logs can be found in:
/opt/local/var/log/mysql8

上記には、最初に実行する3つのコマンドが指示されています。最初に実行するのは以下のコマンドです。

sudo /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql

上記のコマンドを実行すると、以下のような実行結果になりますが、ポイントは赤矢印の箇所になります。

ここに、ランダムに生成された最初のrootのパスワードが作成されています。

カテゴリー
IT MacPorts MySQL Web サーバー プログラム

MacPortsで全てのバージョンのMySQLを実行する

MacPortsだと全てのバージョンのMySQLを実行できます。

/opt/local/etc/mysql8/macports-default.cnfskip-networking が設定されているからです。

これは、TCP/IPによる通信ではなく、UNIXドメインソケット(ファイルシステムを使ったプロセス間通信)を利用しているからです。

これは、.sockファイルのパスを変えることで、複数バージョンの起動を可能にする手法です。

TCP/IPでは待ち受けポート(リスニングポート)番号は重複できません。(当然!)

逆に言うと、ポート番号を変えれば複数バージョンの起動も可能ですし、同一バージョンを複数起動する事も可能です!

カテゴリー
Eclipse PHP プログラム

Eclipse で tab が space になる

Eclipseのデフォルト設定では、タブを入力すると自動的にスペースに変換されてしまいます。この設定を解除するのは、知らないと中々難しいのです。

検索エリアから「tab」を含む設定を探し、まさしくこれだろうと思いますが、これは違います。

検索エリアに「formatter」と入力して、PHP > Code Style > Formatter を選択し、下図の「show…」ボタンをクリックします。

下図の「Tab policy」を「Space」から「Tab」に変更します。