#author("2019-05-24T02:08:28+00:00","default:wikiwriter","wikiwriter")
#author("2020-01-02T06:42:57+00:00","default:wikiwriter","wikiwriter")
&tag(MacPorts/mysql5.5);
*目次 [#v1eb88de]
#contents
*参考情報 [#k96cfaa1]
-[[Install MAMP Development stack on Mountain Lion using MacPorts.md:https://gist.github.com/cordoval/4772066]]
-[[MacPorts]]
-[[MySQL]]
-[[MySQL/管理]]

*インストール [#g9811765]
-mysql55-serverパッケージをインストールする
 sudo port install mysql55-server
-以下のインストラクションが表示される。
#pre{{
--->  Some of the ports you installed have notes:
  mysql55 has the following notes:
    On activation if no /opt/local/etc/mysql55/my.cnf file exists one
    will be created which loads
    /opt/local/etc/mysql55/macports-default.cnf.

    If a /opt/local/etc/mysql55/my.cnf file exists MacPorts does not
    touch it and any changes you make to /opt/local/etc/mysql55/my.cnf
    will be preserved (e.g., during port upgrades, deactivations or
    activations). /opt/local/etc/mysql55/my.cnf is a good place to
    customize your mysql55 installation.

    Any changes made to /opt/local/etc/mysql55/macports-default.cnf
    will be lost during port upgrades, deactivations or activations so you
    are advised to not make changes here. Currently
    /opt/local/etc/mysql55/macports-default.cnf contains only one
    directive; to disable networking. With disabled networking it is
    possible to install and have running all the MacPorts mysql ports
    simultaneously.
  mysql55-server has the following notes:
    If this is a new install you might want to run:

    $ sudo -u _mysql /opt/local/lib/mysql55/bin/mysql_install_db
}}

*設定 [#e3cc3795]
**my.cnfの編集 [#d44e9c20]
-既にデフォルトのmy.cnfがインストールされている
 sudo emacs -nw /opt/local/etc/mysql55/my.cnf
-先頭行のincludeをコメントアウトしないとネットワーク経由で接続できない(デフォルト設定で禁止されているため)。
#pre{{
# Use default MacPorts settings
!include /opt/local/etc/mysql55/macports-default.cnf
}}
-/opt/local/share/mysql55/support-files/my-small.cnfをコピーして、以下の設定を追加する。
-utf-8に統一する。
#pre{{
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
max_allowed_packet = 32M
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8
}}

**ログを出力する [#y6d65cf7]
-設定を変えるなどしたタイミングで起動しなくなった場合ログファイルを出力する。
-出力場所はパーミッションの関係から「/opt/local/var/log/mysql55」ではなく、「/opt/local/var/db/mysql55」が良いかも。
#pre{{
[mysqld]
log_warnings=2
log-error = /opt/local/var/db/mysql55/mysqld.log
}}
**データベース初期化 [#xc7a9223]
-初期化スクリプトを実行する(※envでTMPDIRが設定されている場合かつsudoで環境変数を引き継ぐようにしている場合、unset TMPDIRまたはunalias sudoしてからじゃないとだめ。)。
 $ unalias sudo
 $ sudo -u _mysql /opt/local/lib/mysql55/bin/mysql_install_db
-パスワードを設定する。ホームディレクトリにパスワードを記述した.my.cnfがある場合はリネームしておくこと。
 $ /opt/local/lib/mysql55/bin/mysqladmin -u root password 'new-password'

**自動起動設定 [#tf7b23f4]
 sudo port load mysql55-server

**止める [#r5326c69]
 sudo port unload mysql55-server

*Tips [#ub81c659]
**mysql5.1からの移行 [#qe738b21]
-mysql5.1データベースの全ダンプ(mysqldump --all-database)
-mysql5.1の削除
 sudo port uninstall mysql-server
-mysql5.5のインストール
 sudo port install mysql55-server
-上の設定に従ってmysql55-serverのセットアップを行う。
-データベースの個別リストア(mysql --one-database データベース名)。事前に空のデータベースがないとだめっぽい。[[mysql - How do I restore one database from a mysqldump containing multiple databases? - Stack Overflow:http://stackoverflow.com/questions/3596444/how-do-i-restore-one-database-from-a-mysqldump-containing-multiple-databases]]
-phpを使っている場合、/opt/local/etc/php5/php.ini を編集し、/opt/local/var/run/mysql5/mysqld.sockを/opt/local/var/run/mysql55/mysqld.sockに書き換える。

**データベースを最初から作り直す [#x993c123]
-パッケージを完全に削除する方法はないのでこの方法でやり直す。
#pre{{
sudo port deactivate mysql55-server mysql55
cd /opt/local/var/db
sudo /bin/rm -r mysql55
sudo port activate mysql55-server mysql55
unalias sudo
sudo -u _mysql /opt/local/lib/mysql55/bin/mysql_install_db
}}
*トラブルシューティング [#xbff5378]
**mysql_install_dbを実行するとCan't create/write to file '/var/flodlers/...'といわれてダメ。 [#da386abe]
-コマンドは以下の形式で実行。
 sudo -u _mysql /opt/local/lib/mysql55/bin/mysql_install_db
-原因は、TMPDIR環境変数が一般ユーザー(sudoを実行するユーザー)に設定されていて、かつ、sudoで環境変数を引き継ぐ設定になっていたから。unsetするか、tmpdirの明示指定でいけるっぽい。
--unset TMPDIR
--sudo -u _mysql /opt/local/lib/mysql55/bin/mysql_install_db --tmpdir=/tmp”

**インストール直後に「Access denied for user 'root'@'localhost' (using password: YES)」 [#v167ec89]
-/opt/local/lib/mysql55/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'といわれてしまう。
-原因は、~/.my.cnfが存在していてそこにrootのパスワードを書いていたから(-pオプションの省略で、.my.cnfのパスワードが使われていた模様)。
-明示的に-pを指定するか、.my.cnfを一時的にリネームする。(-pのあとにスペース2個必要かも?)
 /opt/local/lib/mysql55/bin/mysqladmin -u root -p  password 'new-password'

**no destrootでインストールエラー [#d50f40cd]
-mysql55-serverをインストールすると以下のようなエラーが発生。
#pre{{
Failed to install mysql55-server: no destroot found at: /opt/local/var/mac\
ports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_\
ports_databases_mysql55/mysql55-server/work/destroot
}}
-「sudo port clean mysql55-server」で治るという説もあるけどだめ。指定したフォルダを手動で作成すれば解決。
 sudo port mkdir -p /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_databases_mysql55/mysql55-server/work/destroot

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS