iT邦幫忙

0

別台電腦無法連上本機的資料庫

大家好,本身第一次發文請多指教!

我用C#搭配MySQL(phpmyadmin)練習寫了一個程式

MySQL是架在我的主要電腦上,有固定ip

由主要電腦上測試可以連線

但是由別台電腦連就會報錯而無法順利連線了

查了很久都不知道原因,想問大家有可能是哪邊出問題嗎?謝謝!

wonton iT邦高手 6 級 ‧ 2017-03-10 08:16:53 檢舉
如果你的其他台電腦是 windows 系統,首先可以 telnet ip 3306 port 看有沒有通? 再來,安裝一下 mysql 的 odbc,然後建立一個連線測試一下,再看看報錯的資訊為何?
muscat iT邦新手 5 級 ‧ 2017-03-10 18:44:50 檢舉
感謝,錯誤訊息是這樣的:
MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.
依舊不解QQ
wonton iT邦高手 6 級 ‧ 2017-03-12 13:37:02 檢舉
你這個錯誤訊息是執行 c# 程式來的? 還是?
因為我對 c# 不熟,請問程式本身有包含連結 mysql 的元件嗎? 或是 執行 c# 的那台電腦有安裝 mysql odbc driver 嗎?

2 個回答

1
James
iT邦大師 7 級 ‧ 2017-03-10 08:08:23

找一下mysql的設定檔(也許是my.cnf)
裡面如果有bind-address= 127.0.0.1,
在前面加#註解掉,重啟mysql server。

2
bizpro
iT邦大師 1 級 ‧ 2017-03-10 10:06:38

因為沒有權限:
假設MySQL的使用者是: 'someone'@'host'
內定的host是localhost, 當您從外部IP連進來時, 就需要給予非localhost的權限. 以192.168.0.99為例:
(1) 確認/etc/mysql/my.cnf中的bind-address:
bind-address            = 0.0.0.0
重啟mysql.
(2) 授權:

mysql>grant all privileges on *.* to 'someone'@'192.168.0.99' identified by 'yourpassword';
mysql>flush privileges;

如果只是限定在資料庫somedb:

mysql>grant all privileges on somedb.* to 'someone'@'192.168.0.99' identified by 'yourpassword';
mysql>flush privileges;
muscat iT邦新手 5 級 ‧ 2017-03-10 18:32:50 檢舉

感謝,我有在資料庫已經有新增主機名稱%的使用者了,而my.cnf由於我是用win10所以應該是my.ini對吧?但還是沒有找到bind-address耶?

bizpro iT邦大師 1 級 ‧ 2017-03-10 19:46:21 檢舉

如果my.ini不存在, 就複製my-(type).ini:

cd C:\Program Files\MySQL\<MySQL 版本>
copy my-medium.ini my.ini
net stop mysql
net start mysql
James iT邦大師 7 級 ‧ 2017-04-06 12:09:28 檢舉

沒有bind-address那預設就是全開,win 10可能要檢查內建firewall有沒有開放。

我要發表回答

立即登入回答