Skip to content

Commit 78acf3c

Browse files
committed
updates for version 3.2.7
1 parent 67954ff commit 78acf3c

File tree

7 files changed

+417
-374
lines changed

7 files changed

+417
-374
lines changed

.github/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
- version 3.2.0 - 02/01/2025 - MariaDB compatible and Log Rotation
1414
- version 3.2.5 - 02/06/2025 - Log Generator Stress Test Improvements
1515
- version 3.2.6 - 02/14/2025 - consolidation of 25 source code scripts refined for MySQL & MariaDB
16+
- version 3.2.7 - 02/28/2025 - added error message Exception details, resolved backslash & forward slash issues, schema script improvements - see changelog
1617
- [1.0.1] apache_logs.error_systemCodeID corrected line - INTO logsystemCode to INTO logsystemCodeID
1718
- [1.0.1] remove debugging - SELECT statement from apache_logs.process_access_import, process_error_import & normalize_useragent.
1819
- [1.0.1] remove whitespace and commented out old code on all stored programs
@@ -121,3 +122,7 @@
121122
- [3.2.6] repository had MySQL Workbench generated script that added CHARSET and COLLAT. The raw source code scripts did not specify CHARSET or COLLATE. Raw source code scripts worked fine on MySQL and MariaDB testing.
122123
- [3.2.6] MySQL 9.1 default is CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci. MariaDB 11.6 default is CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci. COLLATE=utf8mb4_0900_ai_ci does not exist in MariaDB causing script errors.
123124
- [3.2.6] The solution that works for both MySQL and MariaDB is only specify CHARSET=utf8mb4. If CHARACTER SET charset_name is specified without COLLATE, character set charset_name and its default collation are used.
125+
- [3.2.7] add except Exception as e: to all previous except: statements. e is printed with error message to console and logged to `import_error` TABLE.
126+
- [3.2.7] fixed MacOS and Linux platforms issue with double seperators in paths stored in `import_file` TABLE. This was a result of fixing the double separator on Windows platform. Issue now fixed on all 3 platforms.
127+
- [3.2.7] modify `apache_logs_schema.sql` generation script to comment out DROP statements and add comment to start of each merged file.
128+
- [3.2.7] add two indexes for companion Web Interface - mysql-to-apache-echarts which is due to be released mid-March.

.github/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ Only MySQL server must be configured in `my.ini`, `mysqld.cnf` or `my.cnf` depen
221221
local-infile=1
222222
```
223223
### 3. Create Database USER & GRANTS
224-
To minimize data exposure and breach risks create a Database USER for Python module with GRANTS to only schema objects and privileges required to execute import processes. Replace hostname from `%` to hostname of database such as `localhost` to only allow USER access from single location. (`mysql_user_and_grants.sql` in repository)
224+
To minimize data exposure and breach risks create a Database USER for Python module with GRANTS to only schema objects and privileges required to execute import processes. Replace hostname from `localhost` to hostname of installed database if different. (`mysql_user_and_grants.sql` in repository)
225225
![mysql_user_and_grants.sql in repository](./assets/mysql_user_and_grants.png)
226226
### 4. Settings.env Variables
227227
settings.env with default settings for Windows. Use backslash `\` on Windows platform. Subfolder searches return backslashes in path results. Backslash `\` for Windows and forward slash `/` for Linux and MacOS.
17.5 KB
Loading

.github/mysql_user_and_grants.sql

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
-- Python MySQL USER for all client module connections
2-
CREATE USER `apache_upload`@`%` IDENTIFIED BY 'password';
3-
-- Python module CALLS 6 Stored Procedures for log processing
4-
GRANT EXECUTE ON PROCEDURE apache_logs.process_access_parse TO `apache_upload`@`%`;
5-
GRANT EXECUTE ON PROCEDURE apache_logs.process_access_import TO `apache_upload`@`%`;
6-
GRANT EXECUTE ON PROCEDURE apache_logs.process_error_parse TO `apache_upload`@`%`;
7-
GRANT EXECUTE ON PROCEDURE apache_logs.process_error_import TO `apache_upload`@`%`;
8-
GRANT EXECUTE ON PROCEDURE apache_logs.normalize_useragent TO `apache_upload`@`%`;
9-
GRANT EXECUTE ON PROCEDURE apache_logs.normalize_client TO `apache_upload`@`%`;
2+
CREATE USER 'apache_upload'@'localhost' IDENTIFIED BY 'password';
3+
-- Python CALLS 5 Stored Procedures for log processing & 1 Stored Procedure for error logging
4+
GRANT EXECUTE ON PROCEDURE apache_logs.process_access_parse TO `apache_upload`@`localhost`;
5+
GRANT EXECUTE ON PROCEDURE apache_logs.process_access_import TO `apache_upload`@`localhost`;
6+
GRANT EXECUTE ON PROCEDURE apache_logs.process_error_parse TO `apache_upload`@`localhost`;
7+
GRANT EXECUTE ON PROCEDURE apache_logs.process_error_import TO `apache_upload`@`localhost`;
8+
GRANT EXECUTE ON PROCEDURE apache_logs.normalize_useragent TO `apache_upload`@`localhost`;
9+
GRANT EXECUTE ON PROCEDURE apache_logs.normalize_client TO `apache_upload`@`localhost`;
1010
-- Python module CALLS 1 Stored Procedures for error logging
11-
GRANT EXECUTE ON PROCEDURE apache_logs.errorLoad TO `apache_upload`@`%`;
11+
GRANT EXECUTE ON PROCEDURE apache_logs.errorLoad TO `apache_upload`@`localhost`;
1212
-- Python module SELECTS 5 Stored Functions for log processing
13-
GRANT EXECUTE ON FUNCTION apache_logs.importDeviceID TO `apache_upload`@`%`;
14-
GRANT EXECUTE ON FUNCTION apache_logs.importClientID TO `apache_upload`@`%`;
15-
GRANT EXECUTE ON FUNCTION apache_logs.importLoadID TO `apache_upload`@`%`;
16-
GRANT EXECUTE ON FUNCTION apache_logs.importFileExists TO `apache_upload`@`%`;
17-
GRANT EXECUTE ON FUNCTION apache_logs.importFileID TO `apache_upload`@`%`;
13+
GRANT EXECUTE ON FUNCTION apache_logs.importDeviceID TO `apache_upload`@`localhost`;
14+
GRANT EXECUTE ON FUNCTION apache_logs.importClientID TO `apache_upload`@`localhost`;
15+
GRANT EXECUTE ON FUNCTION apache_logs.importLoadID TO `apache_upload`@`localhost`;
16+
GRANT EXECUTE ON FUNCTION apache_logs.importFileExists TO `apache_upload`@`localhost`;
17+
GRANT EXECUTE ON FUNCTION apache_logs.importFileID TO `apache_upload`@`localhost`;
1818
-- Python module INSERTS into 4 TABLES executing LOAD DATA LOCAL INFILE for log processing
19-
GRANT INSERT ON apache_logs.load_access_combined TO `apache_upload`@`%`;
20-
GRANT INSERT ON apache_logs.load_access_csv2mysql TO `apache_upload`@`%`;
21-
GRANT INSERT ON apache_logs.load_access_vhost TO `apache_upload`@`%`;
22-
GRANT INSERT ON apache_logs.load_error_default TO `apache_upload`@`%`;
19+
GRANT INSERT ON apache_logs.load_access_combined TO `apache_upload`@`localhost`;
20+
GRANT INSERT ON apache_logs.load_access_csv2mysql TO `apache_upload`@`localhost`;
21+
GRANT INSERT ON apache_logs.load_access_vhost TO `apache_upload`@`localhost`;
22+
GRANT INSERT ON apache_logs.load_error_default TO `apache_upload`@`localhost`;
2323
-- Python module issues SELECT and UPDATE statements on 3 TABLES due to converting parameters.
2424
-- Only reason TABLE direct access is number of parameters required for Stored Procedure.
25-
GRANT SELECT,UPDATE ON apache_logs.access_log_useragent TO `apache_upload`@`%`;
26-
GRANT SELECT,UPDATE ON apache_logs.import_load TO `apache_upload`@`%`;
27-
GRANT SELECT,UPDATE ON apache_logs.log_client TO `apache_upload`@`%`;
25+
GRANT SELECT,UPDATE ON apache_logs.access_log_useragent TO `apache_upload`@`localhost`;
26+
GRANT SELECT,UPDATE ON apache_logs.import_load TO `apache_upload`@`localhost`;
27+
GRANT SELECT,UPDATE ON apache_logs.log_client TO `apache_upload`@`localhost`;

0 commit comments

Comments
 (0)