pull/109/head
Mr Chen 6 years ago
parent b86e27e54c
commit 6da8309e1b
  1. 81
      plugins/mysql/index.py
  2. 34
      plugins/mysql/js/mysql.js
  3. 12
      plugins/phpmyadmin/conf/config.inc.php
  4. 13
      plugins/phpmyadmin/index.py

@ -7,6 +7,9 @@ import time
import subprocess import subprocess
import re import re
reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append(os.getcwd() + "/class/core") sys.path.append(os.getcwd() + "/class/core")
import public import public
@ -365,6 +368,16 @@ def isSqlError(mysqlMsg):
return None return None
def mapToList(map_obj):
# map to list
try:
if type(map_obj) != list and type(map_obj) != str:
map_obj = list(map_obj)
return map_obj
except:
return []
def getDbList(): def getDbList():
args = getArgs() args = getArgs()
page = 1 page = 1
@ -473,6 +486,46 @@ def setRootPwd():
return public.returnJson(False, '修改错误:' + str(ex)) return public.returnJson(False, '修改错误:' + str(ex))
def setUserPwd():
args = getArgs()
data = checkArgs(args, ['password', 'name'])
if not data[0]:
return data[1]
newpassword = args['password']
username = args['name']
id = args['id']
try:
pdb = pMysqlDb()
psdb = pSqliteDb('databases')
name = psdb.where('id=?', (id,)).getField('name')
m_version = public.readFile(getServerDir() + '/version.pl')
if m_version.find('5.7') == 0 or m_version.find('8.0') == 0:
tmp = pdb.query(
"select Host from mysql.user where User='" + name + "' AND Host!='localhost'")
accept = mapToList(tmp)
pdb.execute(
"update mysql.user set authentication_string='' where User='" + username + "'")
result = pdb.execute(
"ALTER USER `%s`@`localhost` IDENTIFIED BY '%s'" % (username, newpassword))
for my_host in accept:
pdb.execute("ALTER USER `%s`@`%s` IDENTIFIED BY '%s'" % (
username, my_host[0], newpassword))
else:
result = pdb.execute("update mysql.user set Password=password('" +
newpassword + "') where User='" + username + "'")
isError = isSqlError(result)
if isError != None:
return isError
pdb.execute("flush privileges")
psdb.where("id=?", (id,)).setField('password', newpassword)
return public.returnJson(True, public.getInfo('修改数据库[{1}]密码成功!', (name)))
except Exception as ex:
print str(ex)
return public.returnJson(False, public.getInfo('修改数据库[{1}]密码失败!', (name)))
def __createUser(dbname, username, password, address): def __createUser(dbname, username, password, address):
pdb = pMysqlDb() pdb = pMysqlDb()
pdb.execute( pdb.execute(
@ -586,6 +639,30 @@ def delDb():
except Exception as ex: except Exception as ex:
return public.returnJson(False, '删除失败!' + str(ex)) return public.returnJson(False, '删除失败!' + str(ex))
def getDbAccess():
args = getArgs()
data = checkArgs(args, ['username'])
if not data[0]:
return data[1]
username = args['username']
pdb = pMysqlDb()
users = pdb.query("select Host from mysql.user where User='" +
username + "' AND Host!='localhost'")
isError = isSqlError(users)
if isError != None:
return isError
users = mapToList(users)
if len(users) < 1:
return public.returnJson(True, "127.0.0.1")
accs = []
for c in users:
accs.append(c[0])
userStr = ','.join(accs)
return public.returnJson(True, userStr)
if __name__ == "__main__": if __name__ == "__main__":
func = sys.argv[1] func = sys.argv[1]
if func == 'status': if func == 'status':
@ -630,5 +707,9 @@ if __name__ == "__main__":
print syncGetDatabases() print syncGetDatabases()
elif func == 'set_root_pwd': elif func == 'set_root_pwd':
print setRootPwd() print setRootPwd()
elif func == 'set_user_pwd':
print setUserPwd()
elif func == 'get_db_access':
print getDbAccess()
else: else:
print 'error' print 'error'

@ -487,6 +487,13 @@ function copyPass(password){
$("#bt_copys").click(); $("#bt_copys").click();
} }
function setDbAccess(username){
myPost('get_db_access','username='+username, function(data){
console.log(data);
});
}
function setDbPass(id, username, password){ function setDbPass(id, username, password){
var index = layer.open({ var index = layer.open({
@ -500,12 +507,13 @@ function setDbPass(id, username, password){
content: "<form class='bt-form pd20 pb70' id='mod_pwd'>\ content: "<form class='bt-form pd20 pb70' id='mod_pwd'>\
<div class='line'>\ <div class='line'>\
<span class='tname'>用户名</span>\ <span class='tname'>用户名</span>\
<div class='info-r'><input name=\"name\" class='bt-input-text mr5' type='text' style='width:330px' value='"+username+"' /></div>\ <div class='info-r'><input readonly='readonly' name=\"name\" class='bt-input-text mr5' type='text' style='width:330px;outline:none;' value='"+username+"' /></div>\
</div>\ </div>\
<div class='line'>\ <div class='line'>\
<span class='tname'>密码</span>\ <span class='tname'>密码</span>\
<div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+password+"' /><span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\ <div class='info-r'><input class='bt-input-text mr5' type='text' name='password' id='MyPassword' style='width:330px' value='"+password+"' /><span title='随机密码' class='glyphicon glyphicon-repeat cursor' onclick='repeatPwd(16)'></span></div>\
</div>\ </div>\
<input type='hidden' name='id' value='"+id+"'>\
<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 id='my_mod_save' type='button' class='btn btn-success btn-sm btn-title'>提交</button>\ <button id='my_mod_save' type='button' class='btn btn-success btn-sm btn-title'>提交</button>\
@ -519,15 +527,13 @@ function setDbPass(id, username, password){
$('#my_mod_save').click(function(){ $('#my_mod_save').click(function(){
var data = $("#mod_pwd").serialize(); var data = $("#mod_pwd").serialize();
console.log(data); myPost('set_user_pwd', data, function(data){
// myPost('set_root_pwd', data, function(data){ var rdata = $.parseJSON(data.data);
// var rdata = $.parseJSON(data.data); showMsg(rdata.msg,function(){
// // console.log(rdata); dbList();
// showMsg(rdata.msg,function(){ $('.layui-layer-close1').click();
// dbList(); },{icon: rdata.status ? 1 : 2});
// $('.layui-layer-close1').click(); });
// },{icon: rdata.status ? 1 : 2});
// });
}); });
} }
@ -679,10 +685,8 @@ function dbList(page, search){
} }
myPost('get_db_list', _data, function(data){ myPost('get_db_list', _data, function(data){
var rdata = $.parseJSON(data.data); var rdata = $.parseJSON(data.data);
// console.log(rdata);
var list = ''; var list = '';
for(i in rdata.data){ for(i in rdata.data){
// console.log(i, rdata.data[i]);
list += '<tr>'; list += '<tr>';
list +='<td><input value="1" class="check" onclick="bt.check_select();" type="checkbox"></td>'; list +='<td><input value="1" class="check" onclick="bt.check_select();" type="checkbox"></td>';
list += '<td>' + rdata.data[i]['name'] +'</td>'; list += '<td>' + rdata.data[i]['name'] +'</td>';
@ -697,9 +701,9 @@ function dbList(page, search){
list += '<td style="text-align:right">' + list += '<td style="text-align:right">' +
'<a href="javascript:;" class="btlink" onclick="openPhpmyadmin(\''+rdata.data[i]['name']+'\',\''+rdata.data[i]['username']+'\',\''+rdata.data[i]['password']+'\')" title="数据库管理">管理</a> | ' + '<a href="javascript:;" class="btlink" onclick="openPhpmyadmin(\''+rdata.data[i]['name']+'\',\''+rdata.data[i]['username']+'\',\''+rdata.data[i]['password']+'\')" title="数据库管理">管理</a> | ' +
'<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" onclick="setDbAccess(\''+rdata.data[i]['username']+'\')" title="设置数据库权限">权限</a> | ' +
'<a href="javascript:;" class="btlink" onclick="setDbPass('+rdata.data[i]['id']+',\''+ rdata.data[i]['username'] +'\',\'' + rdata.data[i]['password'] + '\')">改密</a> | ' + '<a href="javascript:;" class="btlink" onclick="setDbPass('+rdata.data[i]['id']+',\''+ rdata.data[i]['username'] +'\',\'' + rdata.data[i]['password'] + '\')">改密</a> | ' +
'<a href="javascript:;" class="btlink" title="删除数据库" onclick="delDb(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\')">删除</a>' + '<a href="javascript:;" class="btlink" onclick="delDb(\''+rdata.data[i]['id']+'\',\''+rdata.data[i]['name']+'\')" title="删除数据库">删除</a>' +
'</td>'; '</td>';
list += '</tr>'; list += '</tr>';
} }

@ -0,0 +1,12 @@
<?php
$cfg['blowfish_secret'] = 'd41d8cd98f00b204e9800998ecf8427e';
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>

@ -109,12 +109,19 @@ def status():
def start(): def start():
file_tpl = getPluginDir() + '/conf/phpmyadmin.conf' file_tpl = getPluginDir() + '/conf/phpmyadmin.conf'
file_conf = getConf() file_run = getConf()
if not os.path.exists(file_conf): if not os.path.exists(file_run):
centent = public.readFile(file_tpl) centent = public.readFile(file_tpl)
centent = contentReplace(centent) centent = contentReplace(centent)
public.writeFile(file_conf, centent) public.writeFile(file_run, centent)
conf_run = getServerDir() + '/phpmyadmin/config.inc.php'
if not os.path.exists(conf_run):
conf_tpl = getPluginDir() + '/conf/config.inc.php'
centent = public.readFile(conf_tpl)
# centent = contentReplace(centent)
print public.writeFile(conf_run, centent)
public.restartWeb() public.restartWeb()
return 'ok' return 'ok'

Loading…
Cancel
Save