From 22d6f4bd7cdf7cc78996ac63734ce94216f02d4a Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 4 Aug 2023 13:11:32 +0200 Subject: [PATCH] install_mysql.sh: adjustment of some parameters . --- install_mysql.sh | 210 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 193 insertions(+), 17 deletions(-) diff --git a/install_mysql.sh b/install_mysql.sh index a145640..1963056 100755 --- a/install_mysql.sh +++ b/install_mysql.sh @@ -3224,32 +3224,115 @@ collation-server = utf8mb4_general_ci " >> ${logdir}/main.log - if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \ + if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then + + echo " +## - sql_mode +## - +## - The default on MariaDB 10.5 installation is: +## - +## - sql-mode = \"STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" +## - +## - For now, we will use the default value - iIt seems to be ok. +## - +## - +## - Other defaults on MySQL installations: +## - +## - MySQL 8.0 +## - +## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL +## - installations is +## - +## - sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\" +## - +" >> ${logdir}/main.log + + elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \ || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \ || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \ && [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then echo " ## - sql_mode ## - -## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available +## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL +## - installations is ## - -## - For now, we will use the default value, it seems to be ok. +## - sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\" ## - -#sql-mode = \"ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" +## - For now, we will use the default value, without deprecated NO_ZERO_IN_DATE and NO_ZERO_DATE (see below). +## - It seems to be ok. +## - +## - +## - The default on MariaDB 10.5 installation is: +## - +## - sql-mode = \"STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" " >> ${logdir}/main.log else echo " ## - sql_mode ## - -## - To be compartible with older programming on mysql 5.6 +## - To be compartible with older programming on mysql 5.6 use; +## - +## - sql-mode = \"ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" ## - -#sql-mode = \"ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" " >> ${logdir}/main.log fi echo " +## - +## - The default on 5.7 MySQL installations was: +## - +## - sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" +## - +## - +## - NOTE (note on version 5.7): +## - +## - NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, and all of them +## - are not part of strict mode, but should be used in conjunction with strict mode and are enabled +## - by default. A warning occurs if NO_ZERO_DATE or NO_ZERO_IN_DATE is enabled without also enabling +## - strict mode or vice versa. For additional discussion, see SQL Mode Changes in MySQL 5.7. +## - +## - +## - Because NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, expect it to +## - be removed in a future release of MySQL as a separate mode name and its effect included in the effects +## - of strict SQL mode. +## - +" >> ${logdir}/main.log + + if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then +echo " +#sql-mode = \"ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" +" >> ${logdir}/main.log + + elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \ + || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \ + || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \ + && [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then + echo " +sql-mode = \"ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION\" +" >> ${logdir}/main.log + + else + echo " +#sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" +sql-mode = \"ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" +" >> ${logdir}/main.log + fi + +## - Which protocols the server permits for encrypted connections. The value is a +## - comma-separated list containing one or more protocol versions. The protocols +## - that can be named for this variable depend on the SSL library used to compile +## - MySQL. Permitted protocols should be chosen such as not to leave 'holes' in the +## - list. For details, see Section 6.3.2, Encrypted Connection TLS Protocols and Ciphers. +## - +## - NOTE: +## - As of MySQL 5.7.35, the TLSv1 and TLSv1.1 connection protocols are deprecated +## - and support for them is subject to removal in a future version of MySQL. See +## - Deprecated TLS Protocols. +## - +tls_version=TLSv1.2,TLSv1.3 ## - secure_file_priv ## - @@ -3282,6 +3365,7 @@ collation-server = utf8mb4_general_ci ## - this option. ## - #secure-file-priv = \"\" +secure-file-priv = \"\" ## - local_infile @@ -3693,7 +3777,8 @@ myisam_sort_buffer_size = 64M ## - Default: 4MB (MySQL 5.6.6), 1MB before that. ## - #max-allowed-packet = 4M -max-allowed-packet = 32M +#max-allowed-packet = 32M +max-allowed-packet = 128M ## - table_open_cache @@ -4194,9 +4279,12 @@ innodb_read_only_compressed = OFF [mysqldump] quick -max-allowed-packet = 32M +max-allowed-packet = 1024M default-character-set = utf8mb4 +net_read_timeout = 120 +net_write_timeout = 900 + [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL @@ -4355,7 +4443,30 @@ character-set-server = utf8mb4 collation-server = utf8mb4_general_ci EOF - if [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \ + + if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then + cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf +## - sql_mode +## - +## - The default on MariaDB 10.5 installation is: +## - +## - sql-mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" +## - +## - For now, we will use the default value - iIt seems to be ok. +## - +## - +## - Other defaults on MySQL installations: +## - +## - MySQL 8.0 +## - +## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL +## - installations is +## - +## - sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" +## - +EOF + + elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \ || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \ || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \ && [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then @@ -4363,11 +4474,14 @@ EOF cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf ## - sql_mode ## - -## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available +## - Since Version 8.0.11 NO_AUTO_CREATE_USER is no longer available. The default on 8.0 MySQL +## - installations is ## - -## - For now, we will use the default value, it seems to be ok. +## - sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" +## - +## - For now, we will use the default value, without deprecated NO_ZERO_IN_DATE and NO_ZERO_DATE (see below). +## - It seems to be ok. ## - -#sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" EOF else @@ -4375,14 +4489,71 @@ EOF ## - sql_mode ## - -## - To be compartible with older programming on mysql 5.6 +## - To be compartible with older programming on mysql 5.6 use; ## - -sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" +## - sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" +## - +EOF + + fi + + cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf +## - +## - The default on 5.7 MySQL installations was: +## - +## - sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" +## - +## - +## - NOTE (on 5.7 installation): +## - +## - NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, and all of them +## - are not part of strict mode, but should be used in conjunction with strict mode and are enabled +## - by default. A warning occurs if NO_ZERO_DATE or NO_ZERO_IN_DATE is enabled without also enabling +## - strict mode or vice versa. For additional discussion, see SQL Mode Changes in MySQL 5.7. +## - +## - +## - Because NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIVISION_BY_ZERO are deprecated, expect it to +## - be removed in a future release of MySQL as a separate mode name and its effect included in the effects +## - of strict SQL mode. +## - +EOF + + if [[ "$MYSQL_DISTRIBUTION" = "MariaDB" ]] ; then + cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf +#sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" +EOF + + elif [[ "$MYSQL_MAJOR_VERSION" -gt 8 ]] \ + || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -gt 0 ]] ) \ + || ( [[ "$MYSQL_MAJOR_VERSION" -eq 8 ]] && [[ "$MYSQL_MINOR_VERSION" -eq 0 ]] \ + && [[ $MYSQL_PATCH_LEVEL -ge 3 ]] ); then + + cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf +sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" +EOF + + else + cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf +#sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" +sql-mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" EOF fi cat << EOF >> ${MYSQL_INSTALL_DIR}/etc/my.cnf +## - Which protocols the server permits for encrypted connections. The value is a +## - comma-separated list containing one or more protocol versions. The protocols +## - that can be named for this variable depend on the SSL library used to compile +## - MySQL. Permitted protocols should be chosen such as not to leave 'holes' in the +## - list. For details, see Section 6.3.2, “Encrypted Connection TLS Protocols and Ciphers. +## - +## - NOTE: +## - As of MySQL 5.7.35, the TLSv1 and TLSv1.1 connection protocols are deprecated +## - and support for them is subject to removal in a future version of MySQL. See +## - Deprecated TLS Protocols. +## - +tls_version=TLSv1.2,TLSv1.3 + ## - secure-file-priv ## - ## - This variable is used to limit the effect of data import and export operations, @@ -4414,6 +4585,7 @@ EOF ## - this option. ## - #secure-file-priv = "" +secure-file-priv = "" ## - local-infile @@ -4816,7 +4988,8 @@ myisam-sort-buffer-size = 64M ## - Default: 4MB (MySQL 5.6.6), 1MB before that. ## - #max-allowed-packet = 4M -max-allowed-packet = 32M +#max-allowed-packet = 32M +max-allowed-packet = 128M ## - table_open_cache @@ -5328,9 +5501,12 @@ innodb_read_only_compressed = OFF [mysqldump] quick -max-allowed-packet = 32M +max-allowed-packet = 1024M default-character-set = utf8mb4 +net_read_timeout = 120 +net_write_timeout = 900 + [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL @@ -5394,7 +5570,7 @@ EOF ## - ## - To be compartible with older programming on mysql 5.6 ## - -sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" +#sql-mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" EOF fi