#author("2022-06-10T06:34:25+00:00","default:src128","src128")
#author("2022-06-10T06:36:22+00:00","default:src128","src128")
&tag(MacPorts/mysql8);
*目次 [#w448a619]
#contents
*関連ページ [#m4d68432]
*参考情報 [#d8ae446d]

*インストール [#haf1dd4a]
-mysql55-serverのアンインストール
 sudo port uninstall mysql55-server
-mysql8-serverのインストール
 sudo port install mysql8-server
-以下の警告が表示される(無視してOK?)
#pre{{
Warning: -----------------------------------------------------------------------
Warning: The port 'mysql8' uses the cxx11 PortGroup which is deprecated.
Warning: Please instead specify the required c++ standard directly using
Warning:     compiler.cxx_standard  2011
Warning: replacing 2011 with newer standards (e.g. 2014, 2017) as required.
Warning: For more details see https://trac.macports.org/wiki/CompilerSelection
Warning: -----------------------------------------------------------------------
}}
-以下のインストラクションが表示される
#pre{{
--->  Some of the ports you installed have notes:
  mysql8 has the following notes:
    On activation if no /opt/local/etc/mysql8/my.cnf file exists one
    will be created which loads
    /opt/local/etc/mysql8/macports-default.cnf.

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

    Any changes made to /opt/local/etc/mysql8/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/mysql8/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.

    To set mysql8 as your preferred version of MySQL, use `port select`,
    as follows:

    $ sudo port select mysql mysql8
  mysql8-server has the following notes:
    If this is a new install you might want to run:

    $ sudo /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql
    $ sudo port load mysql8-server
    $ /opt/local/lib/mysql8/bin/mysql_secure_installation

    The first command creates the necessary files for the MySQL database service.
    (Remember to make a note of the auto-generated root password from this step.)
    The second command starts the MySQL service.
    The last command helps to improve the security of your running MySQL instance.

    Once enabled, the MySQL logs can be found in:
    /opt/local/var/log/mysql8
}}
-要するに以下を実行する。最初にmy.cnfの設定か。sudoだとエラーがでたのでrootになってから実行した方が良いかも。
#pre{{
    # /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql
    # port load mysql8-server
    # /opt/local/lib/mysql8/bin/mysql_secure_installation
}}
-何かエラーが発生した場合、このページのトラブルシューティングに記載してある情報にmysql8-serverをunloadした後、データフォルダを削除してやりなおす。
-rootのデフォルトパスワードは、 「/opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql」実行後に表示されるので消さないように。
-VALIDATE PASSWORDは向こうにする。


*設定 [#u11e42a8]

**my.cnfの編集 [#q02c4031]
-以下の内容におきかえ。デフォルトはネットワーク経由で接続できない設定なので注意。コメントアウトする場合basedirの指定も必要。
#pre{{
!include /opt/local/etc/mysql8/macports-default.cnf
[mysqld]
skip-networking=0
collation-server=utf8mb4_bin
default_authentication_plugin=mysql_native_password
}}
-以下古い内容。
#pre{{
# Use default MacPorts settings
#!include /opt/local/etc/mysql8/macports-default.cnf

[client]
default-character-set=utf8mb4
[mysqld]
basedir="/opt/local"
character-set-server=utf8mb4
max_allowed_packet = 32M
[mysqldump]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
}}

*トラブルシューティング [#sc404e5e]

**rubyの"mysql2"がインストールできない [#ub308f45]
-以下のようなエラーが発生。
 ld: library not found for -lzstd
-/opt/local/libの下にあるlibzstdを探してくれないらしい(ファイル自体はある)。
-以下を実行したあとbundle installする。
 bundle config --local build.mysql2 "--with-ldflags=-L/opt/local/lib"

**  「mysqld --initialize --user=_mysql」でエラー [#tde4c128]
-/opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysqlでエラーが発生する。
#pre{{
[ERROR] [MY-010338] [Server] Can't find error-message file '/opt/local/lib/mysql8/share/mysql8/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
}}
-原因1: my.cnfのbasedirを確認。以下の設定が有効じゃないとだめ。macports-default.cnfをコメントアウトしないように。
#pre{{
[mysqld]
basedir="/opt/local"

}}
-原因2: 初期化前に「sudo port unload mysql8-server」してからデータフォルダを削除、そのあと初期化しなおしてみる。
 # port unload mysql8-server
 # rm -rf /opt/local/var/db/mysql8/*
 # rm -rf /opt/local/var/db/mysql8/.*
 # /opt/local/lib/mysql8/bin/mysqld --initialize --user=_mysql

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