diff --git a/utils/mariadb/Makefile b/utils/mariadb/Makefile index 727e064b1..2baab6a8b 100644 --- a/utils/mariadb/Makefile +++ b/utils/mariadb/Makefile @@ -211,7 +211,7 @@ define Package/libmariadb/Default endef define Package/libmariadb -$(call Package/libmariadb/Default) + $(call Package/libmariadb/Default) DEPENDS:=$(MARIADB_COMMON_DEPENDS) TITLE:=MariaDB database client library MENU:=1 @@ -234,10 +234,9 @@ endef define Package/mariadb-client $(call Package/mariadb/Default) - TITLE:=MariaDB database core client binaries - DEPENDS:= \ - $(MARIADB_COMMON_DEPENDS) \ - +libedit + TITLE:=MariaDB database client + MENU:=1 + DEPENDS:=mariadb-client-base endef define Package/mariadb-client/description @@ -249,9 +248,30 @@ $(subst $(space),$(newline),$(MARIADB_CLIENT)) endef +define Package/mariadb-client-base + $(call Package/mariadb/Default) + TITLE:=MariaDB database client base + DEPENDS:=mariadb-common \ + $(MARIADB_COMMON_DEPENDS) \ + +libedit +endef + +define Package/mariadb-client-base/conffiles +$(CONF_DIR)/conf.d/50-client.cnf +$(CONF_DIR)/conf.d/50-mysql-clients.cnf +endef + +define Package/mariadb-client-base/description +$(call Package/mariadb/description/Default) + +This package provides the foundation for mariadb-client. It installs the +configuration and the dependencies. + +endef + define Package/mariadb-client-extra $(call Package/mariadb/Default) - TITLE:=MariaDB database extra client binaries + TITLE:=MariaDB database client extra DEPENDS:=mariadb-client endef @@ -264,6 +284,23 @@ $(subst $(space),$(newline),$(MARIADB_CLIENT_EXTRA)) endef +define Package/mariadb-common + $(call Package/mariadb/Default) + TITLE:=MariaDB database common files + DEPENDS:= +endef + +define Package/mariadb-common/conffiles +$(CONF_DIR)/my.cnf +endef + +define Package/mariadb-common/description +$(call Package/mariadb/description/Default) + +This package includes shared files, for example $(CONF_DIR)/my.cnf. + +endef + define Package/mariadb-extra-charsets $(call Package/mariadb/Default) TITLE:=MariaDB database extra character sets @@ -280,16 +317,10 @@ endef define Package/mariadb-server $(call Package/mariadb/Default) - DEPENDS:= \ - $(MARIADB_COMMON_DEPENDS) \ - +!arc:libaio \ - +liblzma \ - +libpcre \ - +resolveip - TITLE:=MariaDB database core server binaries + DEPENDS:=mariadb-server-base + TITLE:=MariaDB database server MENU:=1 PROVIDES:=mysql-server - USERID:=mariadb=376:mariadb=376 endef define Package/mariadb-server/description @@ -301,9 +332,35 @@ $(subst $(space),$(newline),$(MARIADB_SERVER)) endef +define Package/mariadb-server-base + $(call Package/mariadb/Default) + DEPENDS:=mariadb-common \ + $(MARIADB_COMMON_DEPENDS) \ + +!arc:libaio \ + +liblzma \ + +libpcre \ + +resolveip + TITLE:=MariaDB database server base + USERID:=mariadb=376:mariadb=376 +endef + +define Package/mariadb-server-base/conffiles +$(CONF_DIR)/conf.d/50-server.cnf +/etc/default/mysqld +endef + +define Package/mariadb-server-base/description +$(call Package/mariadb/description/Default) + +This package provides the foundation for mariadb-server. It installs the +init script, support files (configuration etc.), the user "mariadb" and +the dependencies. + +endef + define Package/mariadb-server-extra $(call Package/mariadb/Default) - TITLE:=MariaDB database extra server binaries + TITLE:=MariaDB database server extra DEPENDS:=mariadb-server endef @@ -488,11 +545,22 @@ define Package/mariadb-client/install cd $(1)/usr/bin; $(LN) mysqlcheck mysqloptimize endef +define Package/mariadb-client-base/install + $(INSTALL_DIR) $(1)$(CONF_DIR)/conf.d + $(INSTALL_CONF) conf/50-client.cnf $(1)$(CONF_DIR)/conf.d + $(INSTALL_CONF) conf/50-mysql-clients.cnf $(1)$(CONF_DIR)/conf.d +endef + define Package/mariadb-client-extra/install $(INSTALL_DIR) $(1)/usr/bin $(foreach b,$(MARIADB_CLIENT_EXTRA),$(call Package/mariadb/install/bin,$(1),$(b));) endef +define Package/mariadb-common/install + $(INSTALL_DIR) $(1)$(CONF_DIR) + $(INSTALL_CONF) conf/my.cnf $(1)$(CONF_DIR) +endef + define Package/mariadb-extra-charsets/install $(INSTALL_DIR) $(1)$(SHARE_DIR)/charsets $(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/charsets/* $(1)$(SHARE_DIR)/charsets @@ -501,13 +569,16 @@ endef define Package/mariadb-server/install $(INSTALL_DIR) $(1)/usr/bin $(foreach b,$(MARIADB_SERVER),$(call Package/mariadb/install/bin,$(1),$(b));) +endef + +define Package/mariadb-server-base/install + $(INSTALL_DIR) $(1)$(CONF_DIR)/conf.d + $(INSTALL_DIR) $(1)$(SHARE_DIR)/english $(INSTALL_DIR) $(1)/etc/default $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_DIR) $(1)$(CONF_DIR)/conf.d $(INSTALL_BIN) files/mysqld.init $(1)/etc/init.d/mysqld - $(INSTALL_CONF) conf/my.cnf $(1)$(CONF_DIR) + $(INSTALL_CONF) conf/50-server.cnf $(1)$(CONF_DIR)/conf.d $(INSTALL_CONF) conf/mysqld.default $(1)/etc/default/mysqld - $(INSTALL_DIR) $(1)$(SHARE_DIR)/english $(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/english/errmsg.sys $(1)$(SHARE_DIR)/english $(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/fill_help_tables.sql $(1)$(SHARE_DIR) $(INSTALL_DATA) $(PKG_INSTALL_DIR)$(SHARE_DIR)/maria_add_gis_sp_bootstrap.sql $(1)$(SHARE_DIR) @@ -521,11 +592,6 @@ define Package/mariadb-server-extra/install $(foreach b,$(MARIADB_SERVER_EXTRA),$(call Package/mariadb/install/bin,$(1),$(b));) endef -define Package/mariadb-server/conffiles -/etc/default/mysqld -$(CONF_DIR)/my.cnf -endef - define BuildPlugin define Package/$(1)-plugin-$(subst _,-,$(2)) $(call Package/$(subst mariadb-server,mariadb,$(1))/Default) @@ -548,9 +614,12 @@ endef $(eval $(call HostBuild)) $(eval $(call BuildPackage,libmariadb)) $(eval $(call BuildPackage,mariadb-client)) +$(eval $(call BuildPackage,mariadb-client-base)) $(eval $(call BuildPackage,mariadb-client-extra)) +$(eval $(call BuildPackage,mariadb-common)) $(eval $(call BuildPackage,mariadb-extra-charsets)) $(eval $(call BuildPackage,mariadb-server)) +$(eval $(call BuildPackage,mariadb-server-base)) $(eval $(call BuildPackage,mariadb-server-extra)) $(eval $(call BuildPlugin,libmariadb,auth_gssapi_client,+krb5-libs)) diff --git a/utils/mariadb/conf/50-client.cnf b/utils/mariadb/conf/50-client.cnf new file mode 100644 index 000000000..de2b89f5e --- /dev/null +++ b/utils/mariadb/conf/50-client.cnf @@ -0,0 +1,21 @@ +# +# This group is read by the client library +# Use it for options that affect all clients, but not the server +# + +[client] +# Default is Latin1, if you need UTF-8 set this (also in server section) +default-character-set = utf8mb4 + +# Example of client certificate usage +# ssl-cert=/etc/mysql/client-cert.pem +# ssl-key=/etc/mysql/client-key.pem +# +# Allow only TLS encrypted connections +# ssl-verify-server-cert=on + +# This group is *never* read by mysql client library +# If you use the same .cnf file for MySQL and MariaDB, use it for +# MariaDB-only client options +[client-mariadb] + diff --git a/utils/mariadb/conf/50-mysql-clients.cnf b/utils/mariadb/conf/50-mysql-clients.cnf new file mode 100644 index 000000000..b762a766b --- /dev/null +++ b/utils/mariadb/conf/50-mysql-clients.cnf @@ -0,0 +1,25 @@ +# +# These groups are read by MariaDB command-line tools +# Use it for options that affect only one utility +# + +[mysql] +# Default is Latin1, if you need UTF-8 set this (also in server section) +default-character-set = utf8mb4 + +[mysql_upgrade] + +[mysqladmin] + +[mysqlbinlog] + +[mysqlcheck] + +[mysqldump] + +[mysqlimport] + +[mysqlshow] + +[mysqlslap] + diff --git a/utils/mariadb/conf/50-server.cnf b/utils/mariadb/conf/50-server.cnf new file mode 100644 index 000000000..d478d1f5e --- /dev/null +++ b/utils/mariadb/conf/50-server.cnf @@ -0,0 +1,136 @@ +# +# These groups are read by MariaDB server. +# Use it for options that only the server (but not clients) should see +# +# See the examples of server my.cnf files in /usr/share/mysql/ +# + +# this is read by the standalone daemon and embedded servers +[server] + +# this is only for the mysqld standalone daemon +[mysqld] + +# +# * Basic Settings +# +user = mariadb +pid-file = /var/run/mysqld/mysqld.pid +socket = /var/run/mysqld/mysqld.sock +port = 3306 +basedir = /usr +# Don't put this on flash memory +# Figure out where you are going to put the databases and run +# mysql_install_db --force +datadir = /mnt/data/mysql +# tmpdir should also not go on flash memory +tmpdir = /tmp +lc-messages-dir = /usr/share/mariadb + +skip-external-locking + +# Instead of skip-networking the default is now to listen only on +# localhost which is more compatible and is not less secure. +bind-address = 127.0.0.1 + +# +# * Fine Tuning +# +key_buffer_size = 16M +max_allowed_packet = 16M +thread_stack = 192K +thread_cache_size = 8 +# This replaces the startup script and checks MyISAM tables if needed +# the first time they are touched +myisam_recover_options = BACKUP +#max_connections = 100 +#table_cache = 64 +#thread_concurrency = 10 + +# +# * Query Cache Configuration +# +query_cache_limit = 1M +query_cache_size = 16M + +# +# * Logging and Replication +# +# Both location gets rotated by the cronjob. +# Be aware that this log type is a performance killer. +# As of 5.1 you can enable the log at runtime! +#general_log_file = /var/log/mysql/mysql.log +#general_log = 1 +# +# Error log - should be very few entries. +# Note that if unset the errors will go to stdout and can be seen in syslog +# (check "logread") +# +#log_error = /var/log/mysql/error.log +# +# Enable the slow query log to see queries with especially long duration +#slow_query_log_file = /var/log/mysql/mariadb-slow.log +#long_query_time = 10 +#log_slow_rate_limit = 1000 +#log_slow_verbosity = query_plan +# +#log-queries-not-using-indexes +# +# The following can be used as easy to replay backup logs or for replication. +#server-id = 1 +#log_bin = /var/log/mysql/mysql-bin.log +expire_logs_days = 10 +max_binlog_size = 100M +#binlog_do_db = include_database_name +#binlog_ignore_db = exclude_database_name + +# +# * InnoDB +# +# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. +# Read the manual for more InnoDB related options. There are many! + +# +# * Security Features +# +# Read the manual, too, if you want chroot! +# chroot = /var/lib/mysql/ +# +# For generating SSL certificates you can use for example the GUI tool "tinyca". +# +# ssl-ca=/etc/mysql/cacert.pem +# ssl-cert=/etc/mysql/server-cert.pem +# ssl-key=/etc/mysql/server-key.pem +# +# Accept only connections using the latest and most secure TLS protocol version. +# ..when MariaDB is compiled with OpenSSL: +# ssl-cipher=TLSv1.2 + +# +# * Character sets +# +# MySQL/MariaDB default is Latin1, but in OpenWrt we rather default to the full +# utf8 4-byte character set. See also client.cnf +# +# Note: In OpenWrt until mariadb 10.2.19-2 the baked-in defaults were +# "DEFAULT_CHARSET=utf8" and "DEFAULT_COLLATION=utf8_general_ci". As MariaDB's +# utf8 (supports three bytes per character) is not really UTF-8 (which needs up +# to four bytes per character) this was changed. Now the baked in-defaults are +# the upstream defaults (Latin1), but in the default configuration (like in the +# file you are currently reading) utf8mb4 is set, which is real UTF-8. +# +# Of course you are free to change this, either here or in a configuration file +# of your own which is read after this .cnf file, see my.cnf in parent folder +# (files are read in alphabetical order). +character-set-server = utf8mb4 +collation-server = utf8mb4_general_ci + +# +# * Unix socket authentication plugin is built-in +# +# Needed so the root database user can authenticate without a password but +# only when running as the unix root user. +# +# Also available for other users if required. +# See https://mariadb.com/kb/en/unix_socket-authentication-plugin/ + diff --git a/utils/mariadb/conf/my.cnf b/utils/mariadb/conf/my.cnf index effa88a77..7583c7cae 100644 --- a/utils/mariadb/conf/my.cnf +++ b/utils/mariadb/conf/my.cnf @@ -1,54 +1,22 @@ -[client] -port = 3306 -socket = /var/run/mysqld/mysqld.sock - -[mysqld] -user = mariadb -socket = /var/run/mysqld/mysqld.sock -port = 3306 -basedir = /usr - -############ Don't put this on the NAND ############# -# Figure out where you are going to put the databases -# And run mysql_install_db --force -datadir = /mnt/data/mysql/ - -######### This should also not go on the NAND ####### -tmpdir = /mnt/data/tmp/ - -skip-external-locking - -bind-address = 127.0.0.1 - -# Fine Tuning -key_buffer_size = 16M -max_allowed_packet = 16M -thread_stack = 192K -thread_cache_size = 8 - -# Here you can see queries with especially long duration -#log_slow_queries = /var/log/mysql/mysql-slow.log -#long_query_time = 2 -#log-queries-not-using-indexes - -# The following can be used as easy to replay backup logs or for replication. -#server-id = 1 -#log_bin = /var/log/mysql/mysql-bin.log -#expire_logs_days = 10 -#max_binlog_size = 100M -#binlog_do_db = include_database_name -#binlog_ignore_db = include_database_name - - -[mysqldump] -quick -quote-names -max_allowed_packet = 16M - -[mysql] -#no-auto-rehash # faster start of mysql but no tab completition - -[isamchk] -key_buffer = 16M - +# The MariaDB configuration file +# +# The MariaDB/MySQL tools read configuration files in the following order: +# 1. "/etc/mysql/my.cnf" (this file) to set global defaults, +# 2. "/etc/mysql/conf.d/*.cnf" to set global options. +# 3. "~/.my.cnf" to set user-specific options. +# +# If the same option is defined multiple times, the last one will apply. +# +# One can use all long options that the program supports. +# Run program with --help to get a list of available options and with +# --print-defaults to see which it would actually understand and use. + +# +# This group is read both both by the client and the server +# use it for options that affect everything +# +[client-server] + +# Import all .cnf files from configuration directory +!includedir /etc/mysql/conf.d/