ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × FreeBSDのMariaDB 10.4から設定ファイルがserver.cnfに変わった FreeBSDのMariaDB 10.3を10.5に更新し起動しようとしたら、以下のメッセージが出て起動できなかった。 $ sudo service mysql-server start Please merge existing /usr/local/etc/my.cnf file with /usr/local/etc/mysql/conf.d/server.cnf /usr/local/etc/rc.d/mysql-server: WARNING: failed precmd routine for mysql my.cnfとserver.cnfをマージしろとな。 /usr/ports/UPDATINGを探ると以下の文言を発見。 20200526: AFFECTS: users of databases/mariadb104-client, databases/mariadb104-server AUTHOR: brnrd@FreeBSD.org The ports now add sample configuration files to /usr/local/etc/mysql. You must merge your client configuration with the conf.d/client.cnf and your server configuration with conf.d/server.cnf. MariaDB 10.4から設定ファイル置き場が/usr/local/etc/mysqlになったっぽい。今までmy.cnfに一緒くたで書いていたサーバ、クライアントの設定は、それぞれconf.d/server.cnfとconf.d/client.cnfに分ける流儀になった模様。一応、my.cnfも存在するので、そこに書いても問題はないだろうけど… とりあえず目マージで対応し、/usr/local/etc/my.cnfを消したところ、無事起動することを確認。 FreeBSDのMariaDBでリモートクライアントからの接続を許可する A5:SQL Mk-2を使って、実家からVPN経由で自宅鯖のMariaDBにアクセスしようとしたら「Access denied for user'xxxx'」と言われて繋がらなかった。デフォルトでは自ホストのクライアントからの接続しか許可してないらしいので、リモートクライアントからの接続を許可してみたメモ。丁寧なhttps://mariadb.com/kb/en/library/training-tutorials/basic-mariadb-articles/configuring-mariadb-for-remote-client-access/公式ドキュメントが用意されてるので、その通りに進めていくだけですけどね。 my.cnfの設定 'my.cnfの[mysqld]''セクションに以下の2行を追加する。 [mysqld] skip-networking=0 skip-bind-address リモート接続権限の付与 ユーザーにリモート接続の権限を付加する。許可するホストとパスワードを追加してるっぽいので、接続元ごとにパスワードを変えられるっぽい? GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%' IDENTIFIED BY 'new-password' WITH GRANT OPTION; こんな感じで追加されてればおk。 > SELECT user,host FROM mysql.user; +--------------+-----------+ | user | host | +--------------+-----------+ | root | 127.0.0.1 | | root | 172.16.% | ←これ InnoDB File-Per-Tableモードではinnodb_data_home_dirは無視される MySQL/MariaDBにinnodb_data_home_dirというシステム変数がある。InnoDBのデータファイル置き場を明示する変数だが、InnoDB File-Per-Tableモードでは指定値が無視される。File-Per-Tableモードとは、InnoDBのテーブル毎にファイルを作成するモードの事でinnodb_file_per_table変数で制御可能である。MySQL 5.6.6以降でデフォルト有効になったため、innodb_data_home_dirは事実上意味がなくなってしまった。 よって、File-Per-TableモードではZFSのrecordsizeやprimarycacheをストレージエンジン毎に最適化する、という手法が取りにくくなった。(DBごとにフォルダが作成され、その中にInnoDBやMyISAMのファイルが混在することになるため。)自分のメモも兼ねて最適とされるパラメータを下表にまとめる。 ストレージエンジン recordsize primarycache MyISAM 8kBall InnoDB(データ) 16kBmetadata InnoDB(ログ) 128kBmetadata 参考サイト MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.12 InnoDB の起動オプションおよびシステム変数 MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.5.2 InnoDB File-Per-Table モード WITH_CHARSET, WITH_XCHARSETを指定するのは止めにしよう FreeBSDでPrtsからPortsからMySQL/MariaDBを入れる際、よく指定されるオプションにWITH_CHARSET, WITH_XCHARSETがある。調べてみたら、なんとmysql55で廃止されていた。 今まで盲目的に指定していたのだけど、なんとなく気になってググってみても、これぞという解説が見当たらない謎オプション。とりあえずFreeBSD Ports独自のオプションで、日本以外での使用例は殆どない。やむなくportsの更新履歴や8-RELEASE以前の古いportsツリーをあさってみると、mysql51-serverのportsのMakefile(MySQLそのもののMakefileじゃないよ)には以下の記述があるが、mysql55-serverからは消えているという事実が判明。MariaDBはMySQL 5.5からのフォークなので言わずもがなである。 .if defined(WITH_CHARSET) && ${WITH_CHARSET} != "" CONFIGURE_ARGS+=--with-charset=${WITH_CHARSET} .endif .if defined(WITH_XCHARSET) && ${WITH_XCHARSET} != "" CONFIGURE_ARGS+=--with-extra-charsets=${WITH_XCHARSET} .endif 御覧の通り、portsのWITH_CHARSET, WITH_XCHARSETオプションは、それぞれMySQLの–with-charset, –with-extra-charsetsオプションに対応している。そして、MySQL 5.5からは–with-charset自体が消えてるっぽい。似た所で–extra-charsetsってのはあるみたいだけど。そして–with-extra-charsetsの方もデフォルト値がallとなったため、ports側から敢えて指定する必要がなくなり、オプションが削除されたのだと思われる。 WITH_CHARSET, WITH_XCHARSETオプションは、2001年1月25日にmysql323-serverに対する追加が初出のようだ。その時のコミットメッセージは「Add options for alternate charsets (WITH_CHARSET and WITH_XCHARSET).」といったもの。 というわけで、MySQL/MariaDBインストールでWITH_CHARSET, WITH_XCHARSETを付けるのはもう止めよう! 参考サイト FreshPorts -- databases/mysql323-server https://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.htmlMySQL :: MySQL 5.5 Reference Manual :: 2.9.4 MySQL Source-Configuration Options configure --with-extra-charsetsについて - mir the developer start.txt 最終更新: 2022-07-27 15:26by Decomo