Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

WordPressをDreamweaverで編集できるようにしたい から始まるMySQLクリーンインストール

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

前にWordpressDreamweaverで編集できるようにしようと思って、途中で挫折したんだったような気がする。今ならだいぶ成長したしひとりでできるもん。でもwebは参考にするけど。

環境はMac OS X Yosemite 10.10。

どこまでやったんだったか調べてみたら、どうもローカルのPHP起動とMySQL起動まではやってあったっぽい。じゃああと一息じゃん?(と思ったのは勘違いだった(汗))

参考にした記事。

blogs.adobe.com

なんかこの「サイト設定」の「リモートサーバー」「ローカルサーバー」の選択が、webの記事だとチェックボックスになっていて「リモート」「ローカル」両方選択できるのに、うちの環境だとラジオボタンになっていて、どっちかしか選べないんだよなぁ。これどっか設定あるのかな。気になる。リモートサーバーの定義すれば自動的にチェックボックスになるのかな。

ひととおり終わって、「localhost/phpinfo.php」は無事動いた。ところがDreamweaverのリアルタイムプレビューから起動すると、「localhostに接続を拒否されました」と出る。あれ? どこがおかしいんだ……?

確認してみたら、サイト設定のサーバーの「web URL」をlocalhost:8888にしていた。webの記事通りにしたんだけれど、ここはlocalhostが正しいみたい。これで無事リアルタイムプレビューも起動。おっ。PHPの編集できるDreamweaverっぽくなってきた。

MySQLが不調

次はこっち見てWordpressの編集に進もう。

blogs.adobe.com

WordPressを新規にダウンロードして解凍。設定ファイルを書き換え。

ところがどうもうまくいかない。

PhpMyAdminのユーザー追加

私が使っているバージョンでは、「特権(privilege)」のリンク見つからない。最初、rootユーザーではない権限で入っちゃってたみたいで、入り直してやっと見つけた。User accountsタブに置き換わっている模様。

f:id:mogami74:20170801142026j:plain

ところが、ユーザーを設定してWordPressの設定をしようとしてもうまくいかない。

  • パスを通す
  • ルートユーザーにパスワード設定
  • ブログ用のユーザー作成

などしてみたのだけれど、でもWordPressに認識されず。なぜ認識されないかよくわからない。

OS Xの不可視のライブラリー見るとMySQLフォルダと「MySQL-ver」バージョン付きの「mysql-5.6.35-macos10.12-x86_64」フォルダとあるんだけどこのせい?

MySQLの再インストール(とHomebrew導入)

もういっそ全部インストールしなおそう。

qiita.com ↑こっちの記事の方がアンインストールの細部まで書いてある。

yukiyuriweb.com ↑こっちの記事は再インストールまで書かれている。

私の環境では /usr/local/mysql/ と /usr/local/mysql-5.6.35-macos10.12-x86_64/ のふたつのディレクトリにファイルが存在していたので、両方とも sudo rm して削除。この混在がなぜ生じたかわからんけど、原因だったんじゃないかという気がしているんだけどなー。

ついでにHomebrewをインストール。 qiita.com

これまでHomebrew使ってなかったのでいろいろ不便していたけれど、これでまたラクになっちゃうかも。

MySQL地獄

ここからが地獄。いくらやってもエラーが消えない。根本的な知識なしに対処療法でやってるのがいかんのだろうけれど。

いくつかの状態から抜け出せない。

TIMESTAMP with implicit DEFAULT value

「TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option」

これに対処するのは↓でいいみたい。 qiita.com

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

touchしてみる

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’(2)

の場合。

sudo touch /tmp/mysql.sock

ファイルが作成されてないのが問題というパターンもあるらしく、touchコマンドでファイルを作ってみる。(38)に移行する……。

ファイル所有権の問題(らしい)

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’(38)

ls -l /usr/local/var/mysql/

でファイルの所有権を確認しながら変更していく。ただ、何が適正状態なのかがわからん(汗)

「The server quit without updating PID file」

いろいろ調べて問題のキモはどうやらここ。

mysqlの起動ユーザーと設定ファイル(/usr/local/var/mysql/*)のユーザーを同じにしなくてはいけません。
--via mysqlが起動しない問題 - Qiita

mysqlの起動ユーザーと設定ファイル(/usr/local/var/mysql/*)のユーザーを同じにしなくてはいけません。」 そうだよなぁ、そうだよなぁ。んで起動ユーザーはmy.cnfで調べないといけない。この置き場所は環境によって違うらしいけど、私の場合はusr/local/etc/my.cnfにあった。

www.findxfine.com

私のmy.cnfにはユーザーの記述がなかったので、user=mysqlを追加。でも改善せず(最終的には削除した)。

エラーログを読むことも大切ということがだんだんわかってきた(当たり前といえばそうなんだが)。

/usr/local/var/mysql/*.err: Permission denied

が出る場合は、エラーファイル(*.err)が更新されてないので、それをなんとかする。具体的には sudo chown -R使って権限を書き換えてみる。自分のユーザー名にするか、_mysqlにするかなど。

エラーファイル(*.err)が更新されていたら、テキストエディタで開いて中を読む。[ERROR]になってる場所を探す。

[ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable

ほほう。そのibdata1はどこにあるかというと、/usr/local/var/mysqlの中にある。これの権限がおかしいってことね。

sudo chmod -R g+rwx /usr/local/var/mysql
--via mysqlを5.5 -> 5.6にバージョンアップしたら、Can't find file: './mysql/plugin.frm' (errno: 13 - Permission denied)で起動こける - Qiita

このchmodというやつが使えそうな気がするぞ。

これ以後 .errファイルを開き、[ERROR]になっている箇所を確認し、そのファイルの管理者権限を書き換えながら進む。

私の場合は、chmod -R username:_mysql にすると解消する場合が多かったみたい。

なんとかmysql.server startで起動するようになった。よかった……いやまた急に起動しなくなるかもしれんのだが。

mysqlのパスワード設定でハマる

rootのパスワードを設定してexit、再度ログインしようとすると蹴られる現象に遭遇する。えー。文字コード設定か何か変なのかな。

qiita.com とりあえずここを見ながら、パスワードを回避。

んで、mysqlデータベースのuserテーブルを見ながらあれこれいじってみた。

結果的にはPASSWORD()のつけ忘れだったようで、以下で動いたことは動いたけれど、warningのおまけがついたのが気になる。

mysql> update mysql.user set authentication_string=PASSWORD(‘パスワード’) where user = ‘root’;

この後 select authentication_string from user where user=‘root’; とやって様子を見ると、暗号化されたテキストが格納されたことがわかる。

Show Warning で見ると「'PASSWORD' is deprecated and will be removed in a future release. 」てあるんだけど、まぁとりあえず今はいいや……よくわからん。

MySQLが動くまで長かった……

PhpMyAdminに戻る

ここまで来るとphpMyAdminは問題なく稼働。

blogs.adobe.com

Wordpressに戻る

これがうまくいかない。

http://localhost/tec/wp-admin/setup-config.php

でデータベースに接続できない。ユーザー名もパスワードも間違ってないはずだけど……。

f:id:mogami74:20170801141115j:plain

弱り果てて、自分でPHP書いて同じ階層に置き、DBにアクセスしてみた。

Error:SQLSTATE[HY000] [2002] No such file or directory

ふうむ? やはりSQLとの接続がうまくいってないみたい。で、また「Error:SQLSTATE[HY000] [2002] No such file or directory」でググる

とはいえ最近は、skip-networking を指定しない代わりに bind-address = 127.0.0.1 をデフォルトとしてローカルからのみTCP接続を受け付ける設定にするのが主流なようなので、そういった環境では 127.0.0.1 でも特に問題なく動くと思います。 --via PHPでデータベースに接続するときのまとめ - Qiita PHPでデータベースに接続するときのまとめ - Qiita

うん? このbind-addressって文字列は見覚えがあるな。 usr/local/etc/my.cnf で見たやつだ。ということは、localhostで指定しない方がいいのかな?

127.0.0.1に指定すると「ファイル wp-config.php に書き込めませんでした。」とは言われたものの「手動で wp-config.php を作成し、中に次のテキストを貼り付けることができます。」ということで先に通してもらえた。「インストール実行」をクリック!

f:id:mogami74:20170801141157j:plain

やったー。localhostWordPress入ったぞ。

順調

ふたたびAdobeの記事に戻ってDreamweaverの設定を続ける。

blogs.adobe.com

サイトの設定、サイト固有のコードヒントの設定、順調。

ライブビューの表示までなんとかなったので、とりあえず終了。