我已經設置了一臺物理mac電腦作爲MySQL服務器。如果我通過終端訪問Internet,它可以很好地工作。 編輯:我現在認識到這只是在本地網絡上。所以,我現在設置一個靜態IP,並將不得不發佈另一個問題,如果我卡住爲什麼MySQL連接字符串在bash中工作,但不是JavaScript?
但我很想解決爲什麼有人不工作,如果我連接的JavaScript,如GoogleSpreadsheets或GoogleSpreadsheets中的任何相關插件(我也認爲它們都是用Javascript編寫的)。
我可以使用這些JavaScript方法中的任何一種來連接到我可以訪問的其他數據庫,但是我想知道爲什麼我無法連接到我的特定應用程序,以及是否有任何可以更改的內容?謝謝。
我在計算機A(Mac OS X Yosemite)上安裝了MySQL服務器。如果我在計算機B(Mac OS El Capitan)的bash中使用以下操作,那麼我可以很好地連接,然後從MySQL獲取任何需要的輸出。
$ # in bash, change path to ensure SQL runs
$ export PATH=$PATH:/usr/local/mysql/bin/
$ # start sql and run a query
$ mysql -u test -pXXXXX -h 192.168.XXX.XX sakila # replace X's with real credentials, where -p is for the password and -h is for the IP address.
$ mysql> SHOW TABLES;
$ mysql> #... output is good
$ mysql> exit;
$
如果我運行在谷歌電子表格的腳本編輯器相同的憑據,我得到的最後一行說,無論是我的連接字符串,用戶名或密碼不正確的錯誤。見下面的腳本。
// attempt to access SQL data using javascript on https://script.google.com
function Drive() {
var ServerIP = '192.168.XXX.XX'; // IP address of the server. replace with real IP
var SQL_Port = '3306'; // port number
var SQL_Usr = 'test'; // name of user
var SQL_Pwd = 'xxxxx'; // password of user. replace with real password
var SQL_DB = 'sakila'; // name of sample database downloaded from MySQL Workbench documentation.
var connectorInstance = 'jdbc:mysql://' + ServerIP +':' + SQL_Port;
var ConnectString = connectorInstance + '/' + SQL_DB;
var conn = Jdbc.getConnection(ConnectString, SQL_Usr, SQL_Pwd); // error on this line
}
我的JavaScript,我的語法是絕對正確的,因爲如果我在憑證串換另一個在線數據庫,然後錯誤消失。同樣,我嘗試了4種不同的Google Spreadsheets加載項,這些加載項在附加存儲區中搜索「SQL」時可用;那些與我嘗試的所有數據庫一起工作,但不是我自己的
而且我自己的服務器的憑據和授權應該正常工作,因爲我可以使用bash進行連接,如頂部所示。
服務器中或其互聯網連接中的其他數據庫是否有一些安全選項設置,這意味着javascript將連接到他們的而不是我的?有什麼我錯過了嗎?
我的選擇是隻用bash訪問服務器(當我構建基於電子表格的前端時不太好),或者在線託管服務器,這會涉及一些成本。
SSH連接有幫助嗎?我以前沒有用過。任何幫助,將不勝感激。
步驟我已經試過
我開始建立MySQL工作臺用一個配置文件 - 「等/ my.cnf中」。
我關閉了「skip-networking」。
我確定「bind_address」已關閉,並且嘗試了「0.0.0.0」,「*」和「%」等變體。
我跟着上了一段關於爲Google腳本設置javascript代碼的課程,並在位置「%」(授予我知道這不安全但是這是一個小測試數據庫)上提供足夠的用戶帳戶詳細信息。
我試過在聯網或其他部分下使用其他選項文件首選項,但它們要麼沒有效果,要麼服務器無法成功重啓並且應用了這些選項。
在測試我的數據庫連接之前,我確保重新啓動我的SQL服務器以確保應用了選項和用戶更改。
我檢查過StackOverflow,看看還有誰在問遠程數據庫,javascript或連接字符串。沒有人似乎有我確切的問題。
我試過使用主機名「Servers-Macbook-Air.local」代替IP,再次在bash中工作,但不在Javascript中。另外,如果我使用IP或主機名稱作爲另一個數據庫,那是有效的。
網站的公網IP,您應該使用公網IP從script.google.com? ip從192.168開始是本地的.. – Hardy
好吧,謝謝,這聽起來應該是這個問題。 – MikeCPT
*「如果通過終端進行訪問,我通過互聯網遠程訪問它」*當然,這種情況並非「遠程訪問」。在獲得對本地shell的遠程訪問後,您仍然在本地**訪問它。 –