mirror of
				https://github.com/nitnelave/lldap.git
				synced 2023-04-12 14:25:13 +00:00 
			
		
		
		
	Sqlite dump helper script pluus doc updates
This commit is contained in:
		
							parent
							
								
									9a457c72af
								
							
						
					
					
						commit
						a749cb0e58
					
				@ -32,10 +32,10 @@ We want to dump (almost) all existing values to some file - the exception being
 | 
				
			|||||||
the `sqlite_sequence`, when it exists). Be sure to stop/pause LLDAP during this step, as some
 | 
					the `sqlite_sequence`, when it exists). Be sure to stop/pause LLDAP during this step, as some
 | 
				
			||||||
databases (SQLite in this example) will give an error if LLDAP is in the middle of a write. The dump should consist just INSERT
 | 
					databases (SQLite in this example) will give an error if LLDAP is in the middle of a write. The dump should consist just INSERT
 | 
				
			||||||
statements. There are various ways to do this, but a simple enough way is filtering a
 | 
					statements. There are various ways to do this, but a simple enough way is filtering a
 | 
				
			||||||
whole database dump. For example:
 | 
					whole database dump. This repo contains [a script](/scripts/sqlite_dump_commands.sh) to generate SQLite commands for creating an appropriate dump:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
sqlite3 /path/to/lldap/config/users.db .dump | grep "^INSERT" | grep -v "^INSERT INTO metadata" | grep -v "^INSERT INTO sqlite_sequence"  > /path/to/dump.sql
 | 
					./sqlite_dump_commands.sh | sqlite3 /path/to/lldap/config/users.db > /path/to/dump.sql
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Sanitize data
 | 
					## Sanitize data
 | 
				
			||||||
@ -62,7 +62,19 @@ following command to wrap all table names in backticks for good measure, and wra
 | 
				
			|||||||
a transaction:
 | 
					a transaction:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
sed -i -r -e 's/^INSERT INTO ([a-zA-Z0-9_]+) /INSERT INTO `\1` /' \
 | 
					sed -i -r -e 's/^INSERT INTO ([a-zA-Z0-9_]+)/INSERT INTO `\1`/' \
 | 
				
			||||||
 | 
					-e '1s/^/START TRANSACTION;\n/' \
 | 
				
			||||||
 | 
					-e '$aCOMMIT;' /path/to/dump.sql
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### To MariaDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					While MariaDB is supposed to be identical to MySQL, it doesn't support timezone offsets on DATETIME
 | 
				
			||||||
 | 
					strings. Use the following command to remove those and perform the additional MySQL sanitization:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					sed -i -r -e "s/([^']'[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{9})\+00:00'([^'])/\1'\2/g" \
 | 
				
			||||||
 | 
					-e 's/^INSERT INTO ([a-zA-Z0-9_]+)/INSERT INTO `\1`/' \
 | 
				
			||||||
-e '1s/^/START TRANSACTION;\n/' \
 | 
					-e '1s/^/START TRANSACTION;\n/' \
 | 
				
			||||||
-e '$aCOMMIT;' /path/to/dump.sql
 | 
					-e '$aCOMMIT;' /path/to/dump.sql
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										9
									
								
								scripts/sqlite_dump_commands.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								scripts/sqlite_dump_commands.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					#! /bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tables=("users" "groups" "memberships" "jwt_refresh_storage" "jwt_storage" "password_reset_tokens")
 | 
				
			||||||
 | 
					echo ".header on"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for table in ${tables[@]}; do
 | 
				
			||||||
 | 
					    echo ".mode insert $table"
 | 
				
			||||||
 | 
					    echo "select * from $table;"
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user