2011-02-07 138 views
0

我目前通過$_SESSION['connection'] = odbc_connect('Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=mysql;Option=3;', 'root', '');如何允許遠程訪問我的數據庫?

訪問數據庫除了fromt的事實,我需要得到一個密碼放在該帳戶(甚至使用另一個帳戶不是root?而且很可能改變DATABSE的名字嗎?),我想編寫一些代碼,我可以不費吹灰之力地安裝在幾個站點上。

我想在每個站點使用相同的代碼,但我不能提前知道IP地址。我該如何解決這個問題?我只是告訴他們的IT人員在odbc_connect()調用中設置類似myDatabaseServer的DNS鏈接,然後用Server=myDatabaseServer替代Server=localhost?或者我需要在Windows控制面板中使用ODBC管理器進行一些操作?

嗯,我也許應該混淆或ditributing之前COMPLE代碼...


更新:我發現this question該說

In your MySQL configuration file (my.cnf), you need the following at least: 
port   = 3306   # Port MySQL listens on 
bind-address = 192.168.1.15 # IP address of your server 
# skip-networking   # This should be commented out to enable networking 

我推測bind-address coudl是myDatabaseServer,所以我不需要編輯每個遠程站點的配置文件(?)

它也表示GRANT ALL ON test.* TO 'root'@'192.168.1.15' IDENTIFIED BY '';因此,是一個必須在數據庫上運行一次的命令?但我無法預先知道IP地址?事實上,多個用戶可能需要訪問 - 我可以通配符到192.168。 ?真的,真的需要嗎?有沒有什麼方法可以配置一次,不知道每個用戶將使用哪個網絡地址範圍(我知道它聽起來不安全,但我可以授予每個人的訪問權並依賴密碼保護,外加人員不會知道數據庫在那裏?)

+1

「甚至可能使用另一個帳戶比根?」 - 可愛...是的,鎖定下來。 – ocodo 2011-02-07 03:45:01

+1

切勿從任何應用程序連接到數據庫作爲`root`,或永遠不允許從任何主機(除`localhost`)連接作爲`root`作爲生產級數據庫;而是創建另一個用戶。 – 2011-02-07 03:56:26

+0

+1。是的我知道 ...我只是用root進行開發。別擔心,我會鎖定它。 – Mawg 2011-02-07 05:58:39

回答

1

bind-address只能設置爲IP地址,而不是域名,並且引用mysql服務器將綁定到的傳出IP地址。

然而,外部連接時,你總是可以只設置bind-address0.0.0.0這樣MySQL服務器會接受它可以訪問任何界面上輸入的3306個連接。管理員會在給服務器命名後監視,並且可以通過該名稱連接到它。

一旦設置正確,您只需要設置適當的用戶憑據,以便外部用戶可以從給定IP(或模式)進行連接。

例如

GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "PASSWORD"; 

See here對於外部IP模式。

當然,你應該使用一般的有限接入帳戶,並只允許訪問特定的數據庫/表

1

只需添加到Slomojo的準確的答案(DB *通常是可以接受的。):不要忘記在對特權進行任何更改後,在mysql中輸入flush privileges;