#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