From f77f744266195ece575f967e3bb5c890addb562a Mon Sep 17 00:00:00 2001 From: Tom Krouper Date: Wed, 11 Dec 2024 15:01:32 -0800 Subject: [PATCH 1/4] Change db_initialized function to check against database instead of files --- CHANGELOG.md | 4 +++- libraries/helpers.rb | 26 +++++++++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d621ceda..532c5255 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## Unreleased +Fix #715: Update `db_initialized?` to be based on database connection instead of file existence + ## 11.1.9 - *2024-12-09* ## 11.1.8 - *2024-11-18* @@ -661,7 +663,7 @@ Adding Ubuntu 13.04 to Platforminfo - **[COOK-2966] - Address foodcritic failures' - **[COOK-4182] - Template parse failure in /etc/init/mysql.conf (data_dir)' - **[COOK-4198] - Added missing tunable' -- **[COOK-4206] - create root@127.0.0.1, as well as root@localhost' +- **[COOK-4206] - create `root@127.0.0.1`, as well as `root@localhost`' ## [4.0.20] - 2014-01-18 diff --git a/libraries/helpers.rb b/libraries/helpers.rb index ad96fee6..62852ddd 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -257,11 +257,21 @@ def db_init end def db_initialized? - if v80plus - ::File.exist? "#{data_dir}/mysql.ibd" - else - ::File.exist? "#{data_dir}/mysql/user.frm" - end + cmd = shell_out("test \"#{db_initialized_check_cmd}\" -gt 0", user: 'root') + cmd.exitstatus == 0 + end + + def db_initialized_check_cmd + # If MySQL is running, mysqladmin ping will return 0 even with invalid credentials + # if MySQL is not running, mysqladmin will return 1 even with valid credentials + cmd = mysqladmin_bin + cmd << ' --user=UNKNOWN_MYSQL_USER' + cmd << ' ping > /dev/null 2>&1 &&' + cmd << " #{mysql_client_bin} #{defaults_file}" + cmd << ' --skip-column-names --batch' + cmd << " --execute=\"SELECT count(*) FROM mysql.db WHERE db LIKE 'test%'\"" + return "scl enable #{scl_name} \"#{cmd}\"" if scl_package? + cmd end def mysql_install_db_bin @@ -279,6 +289,12 @@ def mysql_install_db_cmd cmd end + def mysql_client_bin + return "#{prefix_dir}/bin/mysql" if platform_family?('smartos') + return 'mysql' if scl_package? + "#{prefix_dir}/usr/bin/mysql" + end + def mysqladmin_bin return "#{prefix_dir}/bin/mysqladmin" if platform_family?('smartos') return 'mysqladmin' if scl_package? From 44c651bc570350f86a41fa51a0650dd6e7cff781 Mon Sep 17 00:00:00 2001 From: Tom Krouper Date: Wed, 11 Dec 2024 17:24:28 -0800 Subject: [PATCH 2/4] Revert "Change db_initialized function to check against database instead of files" This reverts commit f77f744266195ece575f967e3bb5c890addb562a. --- CHANGELOG.md | 4 +--- libraries/helpers.rb | 26 +++++--------------------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 532c5255..d621ceda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,6 @@ All notable changes to this project will be documented in this file. ## Unreleased -Fix #715: Update `db_initialized?` to be based on database connection instead of file existence - ## 11.1.9 - *2024-12-09* ## 11.1.8 - *2024-11-18* @@ -663,7 +661,7 @@ Adding Ubuntu 13.04 to Platforminfo - **[COOK-2966] - Address foodcritic failures' - **[COOK-4182] - Template parse failure in /etc/init/mysql.conf (data_dir)' - **[COOK-4198] - Added missing tunable' -- **[COOK-4206] - create `root@127.0.0.1`, as well as `root@localhost`' +- **[COOK-4206] - create root@127.0.0.1, as well as root@localhost' ## [4.0.20] - 2014-01-18 diff --git a/libraries/helpers.rb b/libraries/helpers.rb index 62852ddd..ad96fee6 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -257,21 +257,11 @@ def db_init end def db_initialized? - cmd = shell_out("test \"#{db_initialized_check_cmd}\" -gt 0", user: 'root') - cmd.exitstatus == 0 - end - - def db_initialized_check_cmd - # If MySQL is running, mysqladmin ping will return 0 even with invalid credentials - # if MySQL is not running, mysqladmin will return 1 even with valid credentials - cmd = mysqladmin_bin - cmd << ' --user=UNKNOWN_MYSQL_USER' - cmd << ' ping > /dev/null 2>&1 &&' - cmd << " #{mysql_client_bin} #{defaults_file}" - cmd << ' --skip-column-names --batch' - cmd << " --execute=\"SELECT count(*) FROM mysql.db WHERE db LIKE 'test%'\"" - return "scl enable #{scl_name} \"#{cmd}\"" if scl_package? - cmd + if v80plus + ::File.exist? "#{data_dir}/mysql.ibd" + else + ::File.exist? "#{data_dir}/mysql/user.frm" + end end def mysql_install_db_bin @@ -289,12 +279,6 @@ def mysql_install_db_cmd cmd end - def mysql_client_bin - return "#{prefix_dir}/bin/mysql" if platform_family?('smartos') - return 'mysql' if scl_package? - "#{prefix_dir}/usr/bin/mysql" - end - def mysqladmin_bin return "#{prefix_dir}/bin/mysqladmin" if platform_family?('smartos') return 'mysqladmin' if scl_package? From ea8a79b1c14447159dcaf869e0782f92c26f6bfe Mon Sep 17 00:00:00 2001 From: Tom Krouper Date: Wed, 11 Dec 2024 18:04:38 -0800 Subject: [PATCH 3/4] Check for pid_file --- libraries/helpers.rb | 8 -------- libraries/mysql_service_base.rb | 3 +-- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index ad96fee6..46e93817 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -256,14 +256,6 @@ def db_init mysql_install_db_cmd end - def db_initialized? - if v80plus - ::File.exist? "#{data_dir}/mysql.ibd" - else - ::File.exist? "#{data_dir}/mysql/user.frm" - end - end - def mysql_install_db_bin return "#{base_dir}/scripts/mysql_install_db" if platform_family?('omnios') return "#{prefix_dir}/bin/mysql_install_db" if platform_family?('smartos') diff --git a/libraries/mysql_service_base.rb b/libraries/mysql_service_base.rb index 5e1fc8a5..87eab732 100644 --- a/libraries/mysql_service_base.rb +++ b/libraries/mysql_service_base.rb @@ -91,8 +91,7 @@ def initialize_database bash "#{new_resource.name} initial records" do code init_records_script umask '022' - returns [0, 1, 2] # facepalm - not_if { db_initialized? } + not_if { ::File.exist?("#{new_resource.pid_file}") } action :run end end From 336e69d0db23b4ae97784b5d4017f76ce8fc18c4 Mon Sep 17 00:00:00 2001 From: Tom Krouper Date: Wed, 11 Dec 2024 19:40:41 -0800 Subject: [PATCH 4/4] Return of the returns --- libraries/mysql_service_base.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/mysql_service_base.rb b/libraries/mysql_service_base.rb index 87eab732..8c8384b0 100644 --- a/libraries/mysql_service_base.rb +++ b/libraries/mysql_service_base.rb @@ -91,6 +91,7 @@ def initialize_database bash "#{new_resource.name} initial records" do code init_records_script umask '022' + returns [0, 1, 2] # facepalm not_if { ::File.exist?("#{new_resource.pid_file}") } action :run end