|
|
@ -1239,7 +1239,7 @@ def addDb(): |
|
|
|
reg = "^[\w-]+$" |
|
|
|
reg = "^[\w-]+$" |
|
|
|
if not re.match(reg, args['name']): |
|
|
|
if not re.match(reg, args['name']): |
|
|
|
return mw.returnJson(False, '数据库名称不能带有特殊符号!') |
|
|
|
return mw.returnJson(False, '数据库名称不能带有特殊符号!') |
|
|
|
checks = ['root', 'mysql', 'test', 'sys', 'panel_logs'] |
|
|
|
checks = ['root', 'mysql', 'test', 'sys', 'performance_schema','information_schema'] |
|
|
|
if dbuser in checks or len(dbuser) < 1: |
|
|
|
if dbuser in checks or len(dbuser) < 1: |
|
|
|
return mw.returnJson(False, '数据库用户名不合法!') |
|
|
|
return mw.returnJson(False, '数据库用户名不合法!') |
|
|
|
if dbname in checks or len(dbname) < 1: |
|
|
|
if dbname in checks or len(dbname) < 1: |
|
|
@ -1979,21 +1979,17 @@ def addMasterRepSlaveUser(version=''): |
|
|
|
if not data[0]: |
|
|
|
if not data[0]: |
|
|
|
return data[1] |
|
|
|
return data[1] |
|
|
|
|
|
|
|
|
|
|
|
if not 'address' in args: |
|
|
|
address = '' |
|
|
|
address = '' |
|
|
|
if 'address' in args: |
|
|
|
else: |
|
|
|
|
|
|
|
address = args['address'].strip() |
|
|
|
address = args['address'].strip() |
|
|
|
|
|
|
|
|
|
|
|
username = args['username'].strip() |
|
|
|
username = args['username'].strip() |
|
|
|
password = args['password'].strip() |
|
|
|
password = args['password'].strip() |
|
|
|
# ps = args['ps'].strip() |
|
|
|
|
|
|
|
# address = args['address'].strip() |
|
|
|
|
|
|
|
# dataAccess = args['dataAccess'].strip() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
reg = "^[\w-]+$" |
|
|
|
reg = "^[\w-]+$" |
|
|
|
if not re.match(reg, username): |
|
|
|
if not re.match(reg, username): |
|
|
|
return mw.returnJson(False, '用户名不能带有特殊符号!') |
|
|
|
return mw.returnJson(False, '用户名不能带有特殊符号!') |
|
|
|
checks = ['root', 'mysql', 'test', 'sys', 'panel_logs'] |
|
|
|
checks = ['root', 'mysql', 'test', 'sys', 'performance_schema','information_schema'] |
|
|
|
if username in checks or len(username) < 1: |
|
|
|
if username in checks or len(username) < 1: |
|
|
|
return mw.returnJson(False, '用户名不合法!') |
|
|
|
return mw.returnJson(False, '用户名不合法!') |
|
|
|
if password in checks or len(password) < 1: |
|
|
|
if password in checks or len(password) < 1: |
|
|
@ -2005,14 +2001,13 @@ def addMasterRepSlaveUser(version=''): |
|
|
|
pdb = pMysqlDb() |
|
|
|
pdb = pMysqlDb() |
|
|
|
psdb = pSqliteDb('master_replication_user') |
|
|
|
psdb = pSqliteDb('master_replication_user') |
|
|
|
|
|
|
|
|
|
|
|
auth_policy = getAuthPolicy() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if psdb.where("username=?", (username)).count() > 0: |
|
|
|
if psdb.where("username=?", (username)).count() > 0: |
|
|
|
return mw.returnJson(False, '用户已存在!') |
|
|
|
return mw.returnJson(False, '用户已存在!') |
|
|
|
|
|
|
|
|
|
|
|
if version == "8.0": |
|
|
|
mdb8 = ['8.0','8.1','8.2','8.3','8.4'] |
|
|
|
|
|
|
|
if mw.inArray(mdb8,version): |
|
|
|
sql = "CREATE USER '" + username + \ |
|
|
|
sql = "CREATE USER '" + username + \ |
|
|
|
"' IDENTIFIED WITH "+auth_policy+" BY '" + password + "';" |
|
|
|
"' IDENTIFIED WITH mysql_native_password BY '" + password + "';" |
|
|
|
pdb.execute(sql) |
|
|
|
pdb.execute(sql) |
|
|
|
sql = "grant replication slave on *.* to '" + username + "'@'%';" |
|
|
|
sql = "grant replication slave on *.* to '" + username + "'@'%';" |
|
|
|
result = pdb.execute(sql) |
|
|
|
result = pdb.execute(sql) |
|
|
@ -2028,13 +2023,12 @@ def addMasterRepSlaveUser(version=''): |
|
|
|
if isError != None: |
|
|
|
if isError != None: |
|
|
|
return isError |
|
|
|
return isError |
|
|
|
|
|
|
|
|
|
|
|
sql_select = "grant select,lock tables,PROCESS on *.* to " + username + "@'%';" |
|
|
|
sql_select = "grant select,reload,REPLICATION CLIENT,PROCESS on *.* to " + username + "@'%';" |
|
|
|
pdb.execute(sql_select) |
|
|
|
pdb.execute(sql_select) |
|
|
|
pdb.execute('FLUSH PRIVILEGES;') |
|
|
|
pdb.execute('FLUSH PRIVILEGES;') |
|
|
|
|
|
|
|
|
|
|
|
addTime = time.strftime('%Y-%m-%d %X', time.localtime()) |
|
|
|
addTime = time.strftime('%Y-%m-%d %X', time.localtime()) |
|
|
|
psdb.add('username,password,accept,ps,addtime', |
|
|
|
psdb.add('username,password,accept,ps,addtime',(username, password, '%', '', addTime)) |
|
|
|
(username, password, '%', '', addTime)) |
|
|
|
|
|
|
|
return mw.returnJson(True, '添加成功!') |
|
|
|
return mw.returnJson(True, '添加成功!') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -2071,31 +2065,33 @@ def getMasterRepSlaveUserCmd(version): |
|
|
|
sid = getDbServerId() |
|
|
|
sid = getDbServerId() |
|
|
|
channel_name = "" |
|
|
|
channel_name = "" |
|
|
|
if sid != '': |
|
|
|
if sid != '': |
|
|
|
channel_name = " for channel 'r{}';".format(sid) |
|
|
|
channel_name = " for channel 'r{}'".format(sid) |
|
|
|
|
|
|
|
|
|
|
|
if mode == "gtid": |
|
|
|
mdb8 = ['8.0','8.1','8.2','8.3','8.4'] |
|
|
|
sql = "CHANGE MASTER TO MASTER_HOST='" + ip + "', MASTER_PORT=" + port + ", MASTER_USER='" + \ |
|
|
|
sql = '' |
|
|
|
clist[0]['username'] + "', MASTER_PASSWORD='" + \ |
|
|
|
if not mw.inArray(mdb8,version): |
|
|
|
clist[0]['password'] + "', MASTER_AUTO_POSITION=1" + channel_name |
|
|
|
base_sql = "CHANGE MASTER TO MASTER_HOST='" + ip + "', MASTER_PORT=" + port + ", MASTER_USER='" + \ |
|
|
|
if version == '8.0': |
|
|
|
clist[0]['username'] + "', MASTER_PASSWORD='" + \ |
|
|
|
sql = "CHANGE REPLICATION SOURCE TO SOURCE_HOST='" + ip + "', SOURCE_PORT=" + port + ", SOURCE_USER='" + \ |
|
|
|
clist[0]['password'] + "'" |
|
|
|
clist[0]['username'] + "', SOURCE_PASSWORD='" + \ |
|
|
|
|
|
|
|
clist[0]['password'] + \ |
|
|
|
sql += base_sql; |
|
|
|
"', MASTER_AUTO_POSITION=1" + channel_name |
|
|
|
sql += "<br/><hr/>"; |
|
|
|
|
|
|
|
# sql += base_sql + ", MASTER_AUTO_POSITION=1" + channel_name |
|
|
|
|
|
|
|
sql += base_sql + channel_name |
|
|
|
|
|
|
|
sql += "<br/><hr/>"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sql += base_sql + "', MASTER_LOG_FILE='" + mstatus[0]["File"] + "',MASTER_LOG_POS=" + str(mstatus[0]["Position"]) + channel_name |
|
|
|
else: |
|
|
|
else: |
|
|
|
sql = "CHANGE MASTER TO MASTER_HOST='" + ip + "', MASTER_PORT=" + port + ", MASTER_USER='" + \ |
|
|
|
base_sql = "CHANGE REPLICATION SOURCE TO SOURCE_HOST='" + ip + "', SOURCE_PORT=" + port + ", SOURCE_USER='" + \ |
|
|
|
clist[0]['username'] + "', MASTER_PASSWORD='" + \ |
|
|
|
|
|
|
|
clist[0]['password'] + \ |
|
|
|
|
|
|
|
"', MASTER_LOG_FILE='" + mstatus[0]["File"] + \ |
|
|
|
|
|
|
|
"',MASTER_LOG_POS=" + str(mstatus[0]["Position"]) + channel_name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if version == "8.0": |
|
|
|
|
|
|
|
sql = "CHANGE REPLICATION SOURCE TO SOURCE_HOST='" + ip + "', SOURCE_PORT=" + port + ", SOURCE_USER='" + \ |
|
|
|
|
|
|
|
clist[0]['username'] + "', SOURCE_PASSWORD='" + \ |
|
|
|
clist[0]['username'] + "', SOURCE_PASSWORD='" + \ |
|
|
|
clist[0]['password'] + \ |
|
|
|
clist[0]['password']+"'" |
|
|
|
"', SOURCE_LOG_FILE='" + mstatus[0]["File"] + \ |
|
|
|
sql += base_sql; |
|
|
|
"',SOURCE_LOG_POS=" + \ |
|
|
|
sql += "<br/><hr/>"; |
|
|
|
str(mstatus[0]["Position"]) + channel_name |
|
|
|
# sql += base_sql + ", MASTER_AUTO_POSITION=1" + channel_name |
|
|
|
|
|
|
|
sql += base_sql + channel_name |
|
|
|
|
|
|
|
sql += "<br/><hr/>"; |
|
|
|
|
|
|
|
sql += base_sql + "', SOURCE_LOG_FILE='" + mstatus[0]["File"] + "',SOURCE_LOG_POS=" + str(mstatus[0]["Position"]) + channel_name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data = {} |
|
|
|
data = {} |
|
|
|
data['cmd'] = sql |
|
|
|
data['cmd'] = sql |
|
|
|