web-dev-qa-db-ja.com

Homebrewを使用してMacにMySQLサーバーをインストールする

まったくの初心者として、私はこのチュートリアルを通過しようとしています: http://net.tutsplus.com/tutorials/python-tutorials/python-from-scratch-creating-a-dynamic-website/

Brew install MySQLを使用し、次のバージョンをインストールした時点です:mysql-5.6.10。私は実行していますpython 2.7

ターミナルでmysqldを実行してサーバーを起動しようとすると、次のエラーが発生します。

Davids-MacBook-Pro:~ David$ mysqld
2013-03-17 18:20:28 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2013-03-17 18:20:28 3818 [Warning] Can't create test file /usr/local/var/mysql/Davids-MacBook-Pro.lower-test
2013-03-17 18:20:28 3818 [Warning] Can't create test file /usr/local/var/mysql/Davids-MacBook-Pro.lower-test
mysqld: Can't change dir to '/usr/local/var/mysql/' (Errcode: 2 - No such file or directory)
2013-03-17 18:20:28 3818 [ERROR] Aborting

2013-03-17 18:20:28 3818 [Note] Binlog end
2013-03-17 18:20:28 3818 [Note] mysqld: Shutdown complete
3
David Squires

Homebrewを使用してMySQL(リストしたものと同じバージョン)をインストールしたところ、同様の問題が発生しました。

私のHomebrewのコピーはおそらく健康的ではないことに注意します。 brew doctorは、特にMacPortsまたはfinkのインストールの疑いについて、引き続き警告を表示します。この古いボックスのイメージを最初から再作成する予定です。

それは私が以下を使用して問題を通して私の方法をハックしたと言った:

mkdir /local/var/mysql

# From the `brew info mysql` command's output:
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

(これは3つのコマンドだけです。これらを端末に貼り付ける場合は、#コメントを無視してください)。

そこから、ある端末でmysqld_safe --skip-grant-tablesを実行し、別の端末からmysql -u rootを使用してそのサーバーに接続しました。そこから私は走った:

UPDATE mysql.user SET Password=PASSWORD('**MY_NEW_PASSWORD**') WHERE User='root';
FLUSH PRIVILEGES;

Ctrl-Cをクリックしてサーバーセッションを終了し、mysqld_safeを使用してmysqladmin -u root -p shutdownを強制終了し、HomebrewのリンクでMySQLを再起動しました:mysql.server start

それは仕事をしたようです。 Macを再起動したときにMySQLが自動的に起動するかどうかはわかりません。とにかくそれは欲しくない。それがうまくいくなら、チュートリアル自体に入るのに十分なはずです。もちろん、データベースを操作するたびに、ターミナルを開いてmysql.server startを実行する必要があるかもしれません...そして、次の場合は、自分でlaunchctlに追加することを検索できます。それはあなたが望むものです)。

mysqld_safe --skip-grant-tablesの実行に関する部分は、MySQLデータベースに「侵入」する方法であり、古いパスワードを知らなくても「ルート」(MySQLスーパーユーザーまたは管理者)としてローカルに接続できることに注意してください。ここにある他の投稿SOは、Homebrewがディレクトリを設定し、初期パスワードを「new-password」に設定する必要があることを示唆しています。

ここで示したUPDATEコマンドは、MySQL管理者がルートパスワードを失ったMySQLシステムのパスワード回復を強制する従来のプロセスの一部です。 「mysql」という名前のデータベースには、MySQL独自の管理テーブルが格納されており、その中の「user」テーブルには、「Password」と「User」の列があります。 PASSWORD()関数は、プレーンテキスト(入力しようとしているパスワード)を取得してハッシュします...つまり、文字列/テキストの数値エンコードに対して複雑な一連の数学演算を実行します。これは、 「チェックサム」 MySQLは、パスワード自体のプレーンテキストではなく、mysql.userの[パスワード]列にそのようなハッシュを格納します。

パスワードハッシュは、ほとんどすべてのオペレーティングシステム、データベースシステム、およびパスワードが使用される他のほとんどのシステムとアプリケーションの機能です。最終的にWebアプリケーションを作成する場合は、パスワードの保存と確認に何らかのハッシュ関数を使用する可能性が非常に高くなります。

私が言ったように、私はコマンドbrew info mysqlを使用して、MySQLのインストールを「修正」する方法に関するいくつかの提案を取得します。期待どおりに機能していないように見える場合は、Homebrewを介してインストールする他のすべてのものにそのコマンドを使用できます。

これが私がさらに助けを求めて使用した他のStackOverflowの記事です: https://stackoverflow.com/questions/4359131/brew-install-mysql-on-mac-os

あなたはこれらすべてにおいて非常に初心者であるとあなたが表明したので、私はこれらの詳細のいくつかを意図的に過度に説明しました。

(最近、実際に経験した人がいますSO参加者は、他のSO質問、回答、コメント)にクロスリンクするための好ましい方法を教えてくれます) 。

1
Jim Dennis