3

12.04 を実行している Ubuntu マシンで mysql を使用してリモート データベースを作成しようとしています。

リモートログインが有効になっているルートユーザーがいます。サーバーを起動しました。

の出力

sudo netstat -tap | grep mysql

ショー

tcp        0      0 *:mysql                 *:*                     LISTEN      13135/mysqld 

Ubuntu 12.04 も実行しているクライアント マシンから、python スクリプトを使用して、sqlalchemy を使用してリモートの mysql データベースに接続します。

from pox.core import core
import pox.openflow.libopenflow_01 as of
import re
import datetime
import time
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql.expression import exists

log = core.getLogger()

engine = create_engine('mysql://root:pass@192.168.129.139/home/karthik.sharma/ms_thesis/nwtopology.db', echo=False)

Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()

class SourcetoPort(Base):
    """"""
    __tablename__ = 'source_to_port'
    id = Column(Integer, primary_key=True)
    port_no        = Column(Integer)
    src_address    = Column(String,index=True)

    #-----------------------------------------
    def __init__(self, src_address,port_no):
        """"""
        self.src_address = src_address
        self.port_no     = port_no

create_engine() 呼び出しが次のエラーで失敗しています。

  return dialect.connect(*cargs, **cparams)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 280, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (OperationalError) (1045, "Access denied for user 'root'@'openflow.ems.com' (using password: YES)") None None

なぜこれが起こっているのかわかりませんか?何か助けていただければ幸いです?

4

3 に答える 3

6

まず、mysql は root ユーザーのパスワードを好みません。

接続 URI のルート ユーザー パスワードは次のpassとおりです。

engine = create_engine('mysql://root:pass@192.168.129.139/home/karthik.sharma/ms_thesis/nwtopology.db', echo=False)

そのため、root ユーザーのパスワードを構成し、アプリケーションが実行されているホストから db サーバーとアプリケーションへのアクセスを許可する必要があります。これを行うためのステップバイステップガイドを次に示します。

mysql -u root -pmysql サーバーが実行されているのと同じサーバーでコマンドを実行することにより、ルート ユーザーとしてコマンド ラインから mysql db にアクセスする方法があります。デフォルトでは、mysql は、空のパスワードを使用して localhost から root ユーザーがログインできるように構成されています。

mysql db アクセスを設定してみてください。質問があれば、遠慮なく stackoverflow に投稿してください。

また、mysql URI は少し異なります

'mysql://root:pass@192.168.129.139/nwtopology'
于 2013-05-09T15:09:43.583 に答える
1

mysql ユーザー'root'@'openflow.ems.com'にはアクセス権がないと思うので、試してみてください:

GRANT ALL on *.* to 'root'@'openflow.ems.com';
FLUSH PRIVILEGES;
于 2013-05-09T07:45:48.817 に答える