2015-05-19 3 views
0

У меня есть две виртуальные машины. Один используется как Агент, Один используется как Мастер. Сервер Mysql установлен на Master (Mysql Client запрещен к установке на Master, что означает, что я не могу использовать командную строку mysql на Master). Сервер Mysql имеет пользовательский «root» пользователя по умолчанию. Теперь я хочу написать скрипт python, который использует модуль «MySQLdb» для агента. Тестовый код прост. просто посмотреть, как ниже:python: используйте модуль «MySQLdb» для подключения к удаленному серверу mysql

#!/usr/bin/python 

import MySQLdb 

def main(): 
    try: 
     conn=MySQLdb.connect(host=master ip,user='root',passwd='xxx',db='xxx',port=3306) 
     cur=conn.cursor() 
     count = cur.execute('select * from table') 
     print count 
     cur.close() 
     conn.close() 
    except MySQLdb.Error,e: 
     print "Mysql Error %d: %s" % (e.args[0], e.args[1]) 

if __name__ == "__main__": 
    main() 

однако, когда я исполню ее на агента, есть ошибка:
Mysql Error 1045: Доступ запрещен для пользователя «корень @ Агент внутрибрюшинно» (используя пароль: ДА)

Так что я не знаю, почему пользователь «root @ Agent ip», а не пользователь Mysql по умолчанию на Master. Кто-нибудь знает, как решить эту проблему?

+0

Почему вы устанавливаете host = master ip? –

+2

Вы указали имя пользователя 'user = 'root'', а mysql использовали' username @ host' в качестве пользователя, так что пользователь 'root @ Agent_ip'. Это не проблема «MySQLdb», у вас будет такая же проблема, если вы входите в систему с клиентом mysql. – WKPlus

ответ

2

В MySQL есть команда с именем GRANT. Вы должны предоставить разрешение на корень @ AgentIP

Команда для запуска в тузде клиента сервера (где AgentIP является IP-системы, с которой вы должны получить доступ к БД.):

GRANT ALL on mydb.* to 'root'@'YourIP' identified by 'YourPassword' 

Только тогда сервер MySQL, работающий в удаленной системе, предоставит доступ к базе данных.

Если вы не уверены в деталях IP, вы можете также указать «корень» @ «%»,

, который позволит все запросы от имени пользователя корня из любого места. Это не рекомендуется, но есть такой вариант.

+0

Поскольку клиент mysql запрещен для установки на Master, существует ли какой-либо другой способ предоставления удаленного доступа пользователей? – liminche

+0

@liminche: Или вы также можете предоставить доступ с помощью phpmyadmin. Но нет возможности для удаленного доступа без предоставления разрешений –

Смежные вопросы