Difference between revisions of "MySQL notes"
From Noah.org
Jump to navigationJump to searchLine 4: | Line 4: | ||
mysql -u root -e "grant all on *.* to USERNAME@localhost;" | mysql -u root -e "grant all on *.* to USERNAME@localhost;" | ||
mysql -u root -e "grant all on *.* to USERNAME@'%';" | mysql -u root -e "grant all on *.* to USERNAME@'%';" | ||
+ | |||
+ | == dump shared memory files == | ||
+ | It is pretty easy to read directly from MySQL memmapped files. | ||
+ | This can be handy when you need to hack a search through data files | ||
+ | rather than doing a proper query. Sometimes it's faster to dump data | ||
+ | this way. | ||
+ | <pre> | ||
+ | #!/usr/bin/env python | ||
+ | |||
+ | import mmap | ||
+ | import os, sys, string | ||
+ | |||
+ | def hex_filter (b, offset, block_size = 8): | ||
+ | """Any unprintable characters are converted to line feeds, but | ||
+ | only one line feed is printed per cluster of unprintable characters. | ||
+ | """ | ||
+ | unprintable_flag = True # used to track unprintable chunk state. | ||
+ | for i in xrange (offset, offset+block_size): | ||
+ | #if b[i] in string.printable: | ||
+ | if ord(b[i])>=ord(' ') and ord(b[i])<=ord('~'): | ||
+ | sys.stdout.write("%s"%b[i]) | ||
+ | unprintable_flag = False | ||
+ | else: | ||
+ | if not unprintable_flag: | ||
+ | sys.stdout.write("\n") | ||
+ | unprintable_flag = True | ||
+ | |||
+ | def main (): | ||
+ | filename="/var/lib/mysql/var/test/rmscrub.MYI" | ||
+ | |||
+ | file = open(filename, "rb") | ||
+ | size = os.path.getsize(filename) | ||
+ | data = mmap.mmap(file.fileno(), size, access=mmap.ACCESS_READ) | ||
+ | |||
+ | print "Note that 'data' is a memmapped file and 'size' is taken from the memmapped file size," | ||
+ | print "so len(data) and size should be the same:" | ||
+ | print "len(data):", len(data) | ||
+ | print "size: ", size | ||
+ | |||
+ | block_size = 2048 | ||
+ | size = 1000000 | ||
+ | for i in xrange(0,size, block_size): | ||
+ | hex_filter(data,i, block_size) | ||
+ | |||
+ | main() | ||
+ | </pre> |
Revision as of 15:22, 30 April 2007
create a user
This create a new root level user named USERNAME.
mysql -u root -e "grant all on *.* to USERNAME@localhost;" mysql -u root -e "grant all on *.* to USERNAME@'%';"
It is pretty easy to read directly from MySQL memmapped files. This can be handy when you need to hack a search through data files rather than doing a proper query. Sometimes it's faster to dump data this way.
#!/usr/bin/env python import mmap import os, sys, string def hex_filter (b, offset, block_size = 8): """Any unprintable characters are converted to line feeds, but only one line feed is printed per cluster of unprintable characters. """ unprintable_flag = True # used to track unprintable chunk state. for i in xrange (offset, offset+block_size): #if b[i] in string.printable: if ord(b[i])>=ord(' ') and ord(b[i])<=ord('~'): sys.stdout.write("%s"%b[i]) unprintable_flag = False else: if not unprintable_flag: sys.stdout.write("\n") unprintable_flag = True def main (): filename="/var/lib/mysql/var/test/rmscrub.MYI" file = open(filename, "rb") size = os.path.getsize(filename) data = mmap.mmap(file.fileno(), size, access=mmap.ACCESS_READ) print "Note that 'data' is a memmapped file and 'size' is taken from the memmapped file size," print "so len(data) and size should be the same:" print "len(data):", len(data) print "size: ", size block_size = 2048 size = 1000000 for i in xrange(0,size, block_size): hex_filter(data,i, block_size) main()