pull/109/head
Mr Chen 6 years ago
parent 36b737ff94
commit dcf74daea9
  1. 107
      plugins/mysql/index.py
  2. 36
      plugins/mysql/js/mysql.js

@ -346,13 +346,15 @@ def isSqlError(mysqlMsg):
if "MySQLdb" in mysqlMsg: if "MySQLdb" in mysqlMsg:
return public.returnJson(False, 'MySQLdb组件缺失! <br>进入SSH命令行输入: pip install mysql-python') return public.returnJson(False, 'MySQLdb组件缺失! <br>进入SSH命令行输入: pip install mysql-python')
if "2002," in mysqlMsg: if "2002," in mysqlMsg:
return public.returnMsg(False, '数据库连接失败,请检查数据库服务是否启动!') return public.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!')
if "using password:" in mysqlMsg: if "using password:" in mysqlMsg:
return public.returnMsg(False, '数据库管理密码错误!') return public.returnJson(False, '数据库管理密码错误!')
if "Connection refused" in mysqlMsg: if "Connection refused" in mysqlMsg:
return public.returnMsg(False, '数据库连接失败,请检查数据库服务是否启动!') return public.returnJson(False, '数据库连接失败,请检查数据库服务是否启动!')
if "1133" in mysqlMsg: if "1133" in mysqlMsg:
return public.returnMsg(False, '数据库用户不存在!') return public.returnJson(False, '数据库用户不存在!')
if "1007" in mysqlMsg:
return public.returnJson(False, '数据库已经存在!')
return None return None
@ -464,6 +466,99 @@ def setRootPwd():
return public.returnJson(False, '修改错误:' + str(ex)) return public.returnJson(False, '修改错误:' + str(ex))
def __createUser(dbname, username, password, address):
pdb = pMysqlDb()
pdb.execute(
"CREATE USER `%s`@`localhost` IDENTIFIED BY '%s'" % (username, password))
pdb.execute(
"grant all privileges on %s.* to `%s`@`localhost`" % (dbname, username))
for a in address.split(','):
pdb.execute(
"CREATE USER `%s`@`%s` IDENTIFIED BY '%s'" % (username, a, password))
pdb.execute(
"grant all privileges on %s.* to `%s`@`%s`" % (dbname, username, a))
pdb.execute("flush privileges")
def addDb():
args = getArgs()
if not 'password' in args:
return 'password missing'
if not 'name' in args:
return 'name missing'
if not 'codeing' in args:
return 'codeing missing'
if not 'db_user' in args:
return 'db_user missing'
if not 'dataAccess' in args:
return 'dataAccess missing'
if not 'address' in args:
address = ''
else:
address = args['address'].strip()
dbname = args['name'].strip()
dbuser = args['db_user'].strip()
codeing = args['codeing'].strip()
password = args['password'].strip()
dataAccess = args['dataAccess'].strip()
reg = "^[\w\.-]+$"
if not re.match(reg, args['name']):
return public.returnJson(False, '数据库名称不能带有特殊符号!')
checks = ['root', 'mysql', 'test', 'sys', 'panel_logs']
if dbuser in checks or len(dbuser) < 1:
return public.returnJson(False, '数据库用户名不合法!')
if dbname in checks or len(dbname) < 1:
return public.returnJson(False, '数据库名称不合法!')
if len(password) < 1:
password = public.md5(time.time())[0:8]
wheres = {
'utf8': 'utf8_general_ci',
'utf8mb4': 'utf8mb4_general_ci',
'gbk': 'gbk_chinese_ci',
'big5': 'big5_chinese_ci'
}
codeStr = wheres[codeing]
pdb = pMysqlDb()
psdb = pSqliteDb('databases')
if psdb.where("name=? or username=?", (dbname, dbuser)).count():
return public.returnJson(False, '数据库已存在!')
result = pdb.execute("create database `" + dbname +
"` DEFAULT CHARACTER SET " + codeing + " COLLATE " + codeStr)
# print result
isError = isSqlError(result)
if isError != None:
return isError
pdb.execute("drop user '" + dbuser + "'@'localhost'")
for a in address.split(','):
pdb.execute("drop user '" + dbuser + "'@'" + a + "'")
__createUser(dbname, dbuser, password, address)
addTime = time.strftime('%Y-%m-%d %X', time.localtime())
psdb.add('pid,name,username,password,accept,ps,addtime',
(0, dbname, dbuser, password, address, '', addTime))
return public.returnJson(True, '添加成功!')
def delDb():
try:
return public.returnJson(True, '删除成功!')
except Exception as ex:
return public.returnJson(False, '删除失败!')
if __name__ == "__main__": if __name__ == "__main__":
func = sys.argv[1] func = sys.argv[1]
if func == 'status': if func == 'status':
@ -500,6 +595,10 @@ if __name__ == "__main__":
print initMysqlPwd() print initMysqlPwd()
elif func == 'get_db_list': elif func == 'get_db_list':
print getDbList() print getDbList()
elif func == 'add_db':
print addDb()
elif func == 'del_db':
print delDb()
elif func == 'sync_get_databases': elif func == 'sync_get_databases':
print syncGetDatabases() print syncGetDatabases()
elif func == 'set_root_pwd': elif func == 'set_root_pwd':

@ -461,7 +461,19 @@ function setRootPwd(type, pwd){
}); });
} }
function addDatabase(){ function addDatabase(type){
if (type==1){
var data = $("#add_db").serialize();
myPost('add_db', data, function(data){
var rdata = $.parseJSON(data.data);
console.log(rdata);
// showMsg(rdata.msg,function(){
// dbList();
// $('.layui-layer-close1').click();
// },{icon: rdata.status ? 1 : 2});
});
return;
}
var index = layer.open({ var index = layer.open({
type: 1, type: 1,
skin: 'demo-class', skin: 'demo-class',
@ -495,12 +507,11 @@ function addDatabase(){
<option value='%'>所有人</option>\ <option value='%'>所有人</option>\
<option value='ip'>指定IP</option>\ <option value='ip'>指定IP</option>\
</select>\ </select>\
<input id='dataAccess_subid' class='bt-input-text mr5' type='text' name='address' placeholder='多个IP使用逗号(,)分隔' style='width: 230px; display: inline-block;'>\
</div>\ </div>\
</div>\ </div>\
<div class='bt-form-submit-btn'>\ <div class='bt-form-submit-btn'>\
<button id='my_mod_close' type='button' class='btn btn-danger btn-sm btn-title'>关闭</button>\ <button id='my_mod_close' type='button' class='btn btn-danger btn-sm btn-title'>关闭</button>\
<button type='button' class='btn btn-success btn-sm btn-title' onclick=\"setRootPwd(1)\" >提交</button>\ <button type='button' class='btn btn-success btn-sm btn-title' onclick=\"addDatabase(1)\" >提交</button>\
</div>\ </div>\
</form>", </form>",
}); });
@ -508,6 +519,21 @@ function addDatabase(){
$('#my_mod_close').click(function(){ $('#my_mod_close').click(function(){
$('.layui-layer-close1').click(); $('.layui-layer-close1').click();
}); });
$('select[name="dataAccess"]').change(function(){
var v = $(this).val();
if (v == 'ip'){
$(this).after("<input id='dataAccess_subid' class='bt-input-text mr5' type='text' name='address' placeholder='多个IP使用逗号(,)分隔' style='width: 230px; display: inline-block;'>");
} else {
$('#dataAccess_subid').remove();
}
});
}
function delDb(id, name){
safeMessage('删除['+name+']','您真的要删除['+name+']吗?',function(){
});
} }
function dbList(page, search){ function dbList(page, search){
@ -532,7 +558,7 @@ function dbList(page, search){
list += '<td>' + rdata.data[i]['name'] +'</td>'; list += '<td>' + rdata.data[i]['name'] +'</td>';
list += '<td>' + rdata.data[i]['username'] +'</td>'; list += '<td>' + rdata.data[i]['username'] +'</td>';
list += '<td>' + list += '<td>' +
'<span class="password" data-pw="cajKa4ZAmQJNaYsx">**********</span>' + '<span class="password" data-pw="'+rdata.data[i]['password']+'">**********</span>' +
'<span onclick="bt.pub.show_hide_pass(this)" class="glyphicon glyphicon-eye-open cursor pw-ico" style="margin-left:10px"></span>'+ '<span onclick="bt.pub.show_hide_pass(this)" class="glyphicon glyphicon-eye-open cursor pw-ico" style="margin-left:10px"></span>'+
'<span class="ico-copy cursor btcopy" style="margin-left:10px" title="复制密码" data-pw="cajKa4ZAmQJNaYsx" onclick="bt.pub.copy_pass(\'cajKa4ZAmQJNaYsx\')"></span>'+ '<span class="ico-copy cursor btcopy" style="margin-left:10px" title="复制密码" data-pw="cajKa4ZAmQJNaYsx" onclick="bt.pub.copy_pass(\'cajKa4ZAmQJNaYsx\')"></span>'+
'</td>'; '</td>';
@ -543,7 +569,7 @@ function dbList(page, search){
'<a href="javascript:;" class="btlink" title="MySQL优化修复工具">工具</a> | ' + '<a href="javascript:;" class="btlink" title="MySQL优化修复工具">工具</a> | ' +
'<a href="javascript:;" class="btlink" title="设置数据库权限">权限</a> | ' + '<a href="javascript:;" class="btlink" title="设置数据库权限">权限</a> | ' +
'<a href="javascript:;" class="btlink" title="修改数据库密码">改密</a> | ' + '<a href="javascript:;" class="btlink" title="修改数据库密码">改密</a> | ' +
'<a href="javascript:;" class="btlink" title="删除数据库">删除</a>' + '<a href="javascript:;" class="btlink" title="删除数据库" onclick="delDb(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\')">删除</a>' +
'</td>'; '</td>';
list += '</tr>'; list += '</tr>';
} }

Loading…
Cancel
Save