ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × 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 MySQL 5.6.8でmy.cnfのサンプルがなくなった FreeBSD 10.1-RELEASEにMySQL 5.6.22をインストールしたら、おなじみのmy-medium.cnfが無くなっていた。my-default.cnfというものはあるが、中身を見るとどう見ても空っぽ。 公式サイトによれば、5.6.8から従来のcnfファイルの提供は中止され、mysql_install_dbコマンドで生成するようになったらしい。てなわけで実行してみる。 $ sudo mysql_install_db --user=mysql --basedir=/usr/local --datadir=/usr/home/mysql/data Installing MySQL system tables...2014-12-31 23:47:49 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2014-12-31 23:47:49 67043 [Note] InnoDB: Using atomics to ref count buffer pool pages 2014-12-31 23:47:49 67043 [Note] InnoDB: The InnoDB memory heap is disabled 2014-12-31 23:47:49 67043 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2014-12-31 23:47:49 67043 [Note] InnoDB: Memory barrier is not used 2014-12-31 23:47:49 67043 [Note] InnoDB: Compressed tables use zlib 1.2.3 2014-12-31 23:47:49 67043 [Note] InnoDB: Using CPU crc32 instructions 2014-12-31 23:47:49 67043 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2014-12-31 23:47:49 67043 [Note] InnoDB: Completed initialization of buffer pool 2014-12-31 23:47:49 67043 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created! 2014-12-31 23:47:49 67043 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB 2014-12-31 23:47:49 67043 [Note] InnoDB: Database physically writes the file full: wait... 2014-12-31 23:47:49 67043 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB 2014-12-31 23:47:50 67043 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB 2014-12-31 23:47:50 67043 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0 2014-12-31 23:47:50 67043 [Warning] InnoDB: New log files created, LSN=45781 2014-12-31 23:47:50 67043 [Note] InnoDB: Doublewrite buffer not found: creating new 2014-12-31 23:47:50 67043 [Note] InnoDB: Doublewrite buffer created 2014-12-31 23:47:50 67043 [Note] InnoDB: 128 rollback segment(s) are active. 2014-12-31 23:47:50 67043 [Warning] InnoDB: Creating foreign key constraint system tables. 2014-12-31 23:47:50 67043 [Note] InnoDB: Foreign key constraint system tables created 2014-12-31 23:47:50 67043 [Note] InnoDB: Creating tablespace and datafile system tables. 2014-12-31 23:47:50 67043 [Note] InnoDB: Tablespace and datafile system tables created. 2014-12-31 23:47:50 67043 [Note] InnoDB: Waiting for purge to start 2014-12-31 23:47:50 67043 [Note] InnoDB: 5.6.22 started; log sequence number 0 2014-12-31 23:47:52 67043 [Note] Binlog end 2014-12-31 23:47:52 67043 [Note] InnoDB: FTS optimize thread exiting. 2014-12-31 23:47:52 67043 [Note] InnoDB: Starting shutdown... 2014-12-31 23:47:53 67043 [Note] InnoDB: Shutdown completed; log sequence number 1625977 OK Filling help tables...2014-12-31 23:47:53 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2014-12-31 23:47:53 67044 [Note] InnoDB: Using atomics to ref count buffer pool pages 2014-12-31 23:47:53 67044 [Note] InnoDB: The InnoDB memory heap is disabled 2014-12-31 23:47:53 67044 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2014-12-31 23:47:53 67044 [Note] InnoDB: Memory barrier is not used 2014-12-31 23:47:53 67044 [Note] InnoDB: Compressed tables use zlib 1.2.3 2014-12-31 23:47:53 67044 [Note] InnoDB: Using CPU crc32 instructions 2014-12-31 23:47:53 67044 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2014-12-31 23:47:53 67044 [Note] InnoDB: Completed initialization of buffer pool 2014-12-31 23:47:53 67044 [Note] InnoDB: Highest supported file format is Barracuda. 2014-12-31 23:47:53 67044 [Note] InnoDB: 128 rollback segment(s) are active. 2014-12-31 23:47:53 67044 [Note] InnoDB: Waiting for purge to start 2014-12-31 23:47:53 67044 [Note] InnoDB: 5.6.22 started; log sequence number 1625977 2014-12-31 23:47:53 67044 [Note] Binlog end 2014-12-31 23:47:53 67044 [Note] InnoDB: FTS optimize thread exiting. 2014-12-31 23:47:53 67044 [Note] InnoDB: Starting shutdown... 2014-12-31 23:47:55 67044 [Note] InnoDB: Shutdown completed; log sequence number 1625987 OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/local/bin/mysqladmin -u root password 'new-password' /usr/local/bin/mysqladmin -u root -h MY.HOSTNAME password 'new-password' Alternatively you can run: /usr/local/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd . ; /usr/local/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd mysql-test ; perl mysql-test-run.pl Please report any problems at http://bugs.mysql.com/ The latest information about MySQL is available on the web at http://www.mysql.com Support MySQL by buying support/licenses at http://shop.mysql.com New default config file was created as /usr/local/my.cnf and will be used by default by the server when you start it. You may edit this file to change server settings /usr/local/my.cnfが出来たようだ。中身はというと… /usr/local/my.cnf # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. # basedir = ..... # datadir = ..... # port = ..... # server_id = ..... # socket = ..... # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES これはひどい。どう見ても/usr/local/share/mysql/my-default.cnfをコピーしただけです。本当にありがとうございました。 スクリプトにbasedirとdatadirを渡してるんだから、せめて反映したcnfくらい作ってくれてもいいんじゃないかなぁ…。自分みたいなMySQLの子細は分からないけど、とりあえず使ってみたいユーザーにとっては非常に厳しい。 さて、どうしたものか。 start.txt 最終更新: 2022-07-27 15:26by Decomo