You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
proxysql/scripts/export_users.py

28 lines
1.3 KiB

#!/usr/bin/env python
#
#./scripts/export_users.py '{"db":{"user":"root", "password":"a", "port":"3306", "host":"127.0.0.1"},"admin":{"user":"admin","password":"admin","port":"6032","host":"127.0.0.1"}}'
#
import sys
import subprocess
import json
from MySQLdb import _mysql
if len(sys.argv) > 1:
params=json.loads(sys.argv[1])
db_mysql=_mysql.connect(host=params['db']['host'],user=params['db']['user'],passwd=params['db']['password'],port=int(params['db']['port']))
db_mysql.query('SELECT user, authentication_string from mysql.user')
records=db_mysql.store_result().fetch_row(maxrows=0)
db_proxy_admin=_mysql.connect(host=params['admin']['host'],user=params['admin']['user'],passwd=params['admin']['password'],port=int(params['admin']['port']))
for row in records:
db_proxy_admin.query('INSERT OR REPLACE INTO mysql_users (username, password) values ("'+str(row[0])+'","'+str(row[1])+'")')
result='{"num_records":"'+str(len(records))+'"}'
try:
subprocess.check_output(['mysql', '-u'+params['admin']['user'], '-p'+params['admin']['password'], '-h'+params['admin']['host'], '-P'+params['admin']['port'], '-e', 'load mysql users to runtime'],stderr= subprocess.STDOUT)
except subprocess.CalledProcessError as e:
result='"Error calling mysql: ' + e.output.replace("'", "") + '"'
print('{"params":'+str(sys.argv[1])+', "result":'+result+'}')