Macにhomebrewを使わずにMySQL5.7を入れてみたメモ

Mac(OS X 10.11.4)にMySQL5.7を入れてみたのでそのメモ。homebrewは使ってないです。

ベースディレクトリ・データディレクトリ

今回は下記ディレクトリにインストールします。

インストールディレクトリ
/mysql/mysql-5.7/
データディレクトリ
/mysql/data/

ダウンロード

下記サイトにアクセスします。

「Select Platform:」がMac OS Xになっているのを確認して、「Mac OS X 10.11 (x86, 64-bit), TAR」をダウンロードします。

mysqlダウンロード

ログインアカウントを持っていればログインしてダウンロードして下さい。アカウントを持っていなくても「No thanks.」をクリックしてダウンロード可能です。

MySQLダウンロード

インストール

下記コマンドでインストールします。

tar xvf ~/Downloads/mysql-5.7.12-osx10.11-x86_64.tar
tar xvzf mysql-5.7.12-osx10.11-x86_64.tar.gz
mv mysql-5.7.12-osx10.11-x86_64 ~/mysql/mysql-5.7
rm mysql-5.7.12-osx10.11-x86_64.tar.gz
rm mysql-test-5.7.12-osx10.11-x86_64.tar.gz

起動スクリプト・my.cnfにディレクトリ設定を追加

まず、サーバー起動スクリプト(~/mysql/mysql-5.7/support-files/mysql.server”)の46行目あたりの「basedir」「datadir」にそれぞれのディレクトリを設定します。

basedir='/Users/(ユーザー名)/mysql/mysql-5.7'
datadir='/Users/(ユーザー名)/mysql/data'

そして次にmy.cnfにデータディレクトリの設定を追加します。

[mysqld]
datadir = /Users/(ユーザー名)/mysql/data

※ datadirはmy.cnfの値が優先されます。
※ basedirはmysql.serverに記載しとかないとサーバーが起動できません。
※ フルパスで記載しないと動かないので、(ユーザー名)の箇所は環境ごとに置き換えて記載してください。

新規インストールの場合

新規インストールの場合は下記コマンドを実行してデータディレクトリを初期化します。

~/mysql/mysql-5.7/bin/mysqld --initialize

初期化した時に、rootのパスワードが生成され、表示されますので、必ずメモっておくようにしましょう。

[Note] A temporary password is generated for root@localhost: (ここに表示されます)

次にサーバーを起動します。

~/mysql/mysql-5.7/support-files/mysql.server start

サーバーを起動した状態で、データベースの初期設定を実行します。

~/mysql/mysql-5.7/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 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: Y(パスワード検証プラグインのセットアップを行う)

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y

New password:(新しいパスワードを入力)

Re-enter new password:(新しいパスワードを再入力)

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : 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.

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(リモートからのrootアクセス拒否)
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) : Y(テストDBの削除)
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

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!

5.6からのアップグレードの場合

まずサーバーを起動します。

~/mysql/mysql-5.7/support-files/mysql.server start

次に、下記コマンドを実行してデータのアップグレードを行います。

~/mysql/mysql-5.7/bin/mysql_upgrade -u root -p

起動・再起動・停止

# 起動
~/mysql/mysql-5.7/support-files/mysql.server start
# 再起動
~/mysql/mysql-5.7/support-files/mysql.server restart
# 停止
~/mysql/mysql-5.7/support-files/mysql.server stop
# コンソール起動
~/mysql/mysql-5.7/bin/mysql -u root

.bash_profileに下記行を追加してパスを通せば更に楽になります。

export PATH="~/mysql/mysql-5.7/bin:$PATH"
export PATH="~/mysql/mysql-5.7/support-files:$PATH"
# 起動
mysql.server start
# 再起動
mysql.server restart
# 停止
mysql.server stop
# コンソール起動
mysql -u root

ちょっとハマった所

mysqlサーバーを起動しようとしたら下記の様なエラーが発生。

ERROR! The server quit without updating PID file 

何だと思ってログを確認したら下記エラーを発見(ログはデータディレクトリの中の.errという拡張子のフィアルで作成されています)。

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

mysql.userテーブルが無いということで、一旦データディレクトリの中を削除し、下記コマンドでデータディレクトリの初期化を行い解決しました。

~/mysql/mysql-5.7/bin/mysqld --initialize

※ アップグレードの場合はデータディレクトリの位置がずれてないか、権限が有るか等確認しましょう。

コメントを残す