Tag: MacPorts/mysql5.5

目次

参考情報

インストール

  • mysql55-serverパッケージをインストールする
    sudo port install mysql55-server
  • 以下のインストラクションが表示される。
    --->  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
    

設定

my.cnfの編集

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

データベース初期化

  • 初期化スクリプトを実行する(※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'

自動起動設定

sudo port load mysql55-server

止める

sudo port unload mysql55-server

Tips

mysql5.1からの移行

  • 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
  • phpを使っている場合、/opt/local/etc/php5/php.ini を編集し、/opt/local/var/run/mysql5/mysqld.sockを/opt/local/var/run/mysql55/mysqld.sockに書き換える。

データベースを最初から作り直す

  • パッケージを完全に削除する方法はないのでこの方法でやり直す。
    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
    

トラブルシューティング

mysql_install_dbを実行するとCan't create/write to file '/var/flodlers/...'といわれてダメ。

  • コマンドは以下の形式で実行。
    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)」

  • /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でインストールエラー

  • mysql55-serverをインストールすると以下のようなエラーが発生。
    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
Last-modified: 2019-05-24 (金) 11:08:28 (24d)