[英]Connect to MySQL Database Remote
我在另一台計算機上有一個MySQL數據庫,並且希望能夠從其他計算機(甚至是位於不同網絡上的計算機)進行連接。 我做了以下
的MySQL
CREATE USER 'username_here'@'%' IDENTIFIED BY 'password_here';
然后
GRANT ALL PRIVILEGES ON *.* TO 'username_here'@'%';
FLUSH PRIVILEGES;
我也注釋了my.ini文件中的bind-address
(我有Windows)
然后,在Java應用程序(利用MySQL數據庫)中,我做了
jdbc:mysql://public_ip:3306/database_name
我在jdbc網址中使用了我的公共IP地址。
最后,我在防火牆中打開了端口3306。 但是我無法遠程連接到數據庫。 我還需要做什么其他事情才能連接?
首先:不要公開發布您的真實IP地址和端口,也不要說您打開了防火牆。 也許現在黑客發現黑客很容易,但是您不能依靠它;-)。
對您的問題:也許您將mysql配置為偵聽localhost 3306而不是您的公共IP地址。 請在您的shell中輸入netstat -ltn
。 如果有一行
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
並且沒有公共主機地址,那么您只能從網絡內部進行訪問。 然后,您必須在mysql ini文件中配置主機地址。 (只需將127.0.0.1或localhost替換為您的IP地址即可。
僅供參考:對於您的數據庫服務器,有一個公開開放的端口,特別是MySQL
default( 3306
)端口是一個非常糟糕的主意。 您只是在邀請人們嘗試闖入您的數據庫。
要遠程訪問MySQL
,請執行以下步驟:
1)注釋my.cnf
文件中的以下幾行。
#bind-address = 127.0.0.1
#skip-networking
2)重新啟動mysql服務器。
net stop MySQL
net start MySQL
如果得到The service name is invalid
則打開任務管理器=>單擊服務按鈕=>搜索MySql服務=>重新啟動
與mysql遠程連接:
mysql -h HOST -u USERNAME -pPASSWORD
您還可以使用nmap命令檢查打開的端口:
nmap -PN Ip_address
注意:在您的問題中屏蔽您的IP地址。
MySQL Java連接性:
Class.forName("com.mysql.jdbc.Driver");
// Setup the connection with the DB
Connection connection = DriverManager.getConnection("jdbc:mysql://publicIpAddress/dbName?",
sqluser,password);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.