У меня есть две виртуальные машины. Один используется как Агент, Один используется как Мастер. Сервер 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. Кто-нибудь знает, как решить эту проблему?
Почему вы устанавливаете host = master ip? –
Вы указали имя пользователя 'user = 'root'', а mysql использовали' username @ host' в качестве пользователя, так что пользователь 'root @ Agent_ip'. Это не проблема «MySQLdb», у вас будет такая же проблема, если вы входите в систему с клиентом mysql. – WKPlus