請問mysql-server外部連線[已爬文]

這個版面主要討論 debian 在 server 端的應用問題, server 種類繁多..舉凡 Web Server 、 File Server、 DHCP Server..等等。

版主: 阿信

請問mysql-server外部連線[已爬文]

文章Kavka » 週三 6月 01, 2005 12:36 am

我用apt-get灌好的mysql-server只能夠localhost連線,沒有辦法外部連線。

使用者的設定為:
代碼: 選擇全部
mysql> select user,host from user ;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| test3            | %         |
| root             | Kavka     |
| debian-sys-maint | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)


my.cnf的mysqld部份設定如下(沒有skip-networking )
代碼: 選擇全部
[mysqld]
#
# * Basic Settings
#
user     = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port     = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
language = /usr/share/mysql/english
# skip-locking
# skip-external-locking
thread_concurrency = 4
key_buffer     = 16M
max_allowed_packet   = 16M
thread_stack      = 128K
query_cache_limit = 1048576
query_cache_size        = 16777216
query_cache_type        = 1
log-bin        = /var/log/mysql/mysql-bin.log
files kept.
max_binlog_size      = 104857600
skip-bdb


內部連線偷沒有問題,但是mysql -h指定自己的ip或127.0.0.1就沒辦法連線

代碼: 選擇全部
# > mysql -h 127.0.0.1 -u test3 -p
Enter password:
ERROR 2013: Lost connection to MySQL server during query
# > mysql -h localhost -u test3 -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.0.24_Debian-10-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


user test3的權限為:
代碼: 選擇全部
# > mysqlaccess 127.0.0.1 test3  mysql
mysqlaccess Version 2.06, 20 Dec 2000
By RUG-AIV, by Yves Carlier (Yves.Carlier@rug.ac.be)
Changes by Steve Harvey (sgh@vex.net)
This software comes with ABSOLUTELY NO WARRANTY.

Access-rights
for USER 'test3', from HOST '127.0.0.1', to DB 'mysql'
        +-----------------+---+ +-----------------+---+
        | Select_priv     | Y | | Show_db_priv    | Y |
        | Insert_priv     | Y | | Super_priv      | Y |
        | Update_priv     | Y | | Create_tmp_table_priv | Y |
        | Delete_priv     | Y | | Lock_tables_priv | Y |
        | Create_priv     | Y | | Execute_priv    | Y |
        | Drop_priv       | Y | | Repl_slave_priv | Y |
        | Reload_priv     | Y | | Repl_client_priv | Y |
        | Shutdown_priv   | Y | | Ssl_type        | ? |
        | Process_priv    | Y | | Ssl_cipher      | ? |
        | File_priv       | Y | | X509_issuer     | ? |
        | Grant_priv      | N | | X509_subject    | ? |
        | References_priv | Y | | Max_questions   | 0 |
        | Index_priv      | Y | | Max_updates     | 0 |
        | Alter_priv      | Y | | Max_connections | 0 |
        +-----------------+---+ +-----------------+---+
NOTE:    A password is required for user `test3' :-(

The following rules are used:
 db    : 'No matching rule'
 host  : 'Not processed: host-field is not empty in db-table.'
 user  : '%','test3','X','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0'

BUGs can be reported by email to bugs@mysql.com

網路上用google找資料有找部着頭緒,只找到一篇http://www.linuxuser.com.tw/power/list2.php?id=1892說可能是glibc的問題,可是還是解決不了,請問還有可能是什麼問題嗎?
Kavka
可愛的小學生
可愛的小學生
 
文章: 5
註冊時間: 週三 4月 20, 2005 6:22 pm

文章aahsi » 週三 6月 01, 2005 12:06 pm

mysql預設是不能從遠端連線得喔
若是要開啟需有以下的步驟:
1.進入mysql建立一個可以遠端連線的帳號
2.edit /etc/mysql/my.cnf
找到這段文字
#
# The skip-networkin option will no longer be set via debconf menu.
# You have to manually change it if you want networking i.e. the server
# listening on port 3306. The default is "disable" - for security reasons.
skip-networking
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
set-variable = thread_stack=128K


然後把skip-networking,註解掉,再重開就可以了喔

祝福您 感謝
aahsi
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週日 3月 23, 2003 8:03 pm

文章訪客-larry » 週三 6月 01, 2005 3:09 pm

您好

新版mysql,應該是註解下面這一行(沒有skip-networking這一行了 )。
請試試看。



#bind-address = 127.0.0.1
訪客-larry
 

文章Kavka » 週三 6月 01, 2005 7:07 pm

我的/etc/mysql/my.cnf裡沒有skip-networking,也把bind-address = 127.0.0.1給註解掉了,還是沒辦法連線,請問還有什麼可能嗎?
Kavka
可愛的小學生
可愛的小學生
 
文章: 5
註冊時間: 週三 4月 20, 2005 6:22 pm

文章Kavka » 週四 6月 02, 2005 9:19 pm

試了很久,甚至砍掉改灌mysql4.1,一樣還是沒辦法連線。

從auth.log上來看,連線應該有被建立(也就是說應該與防火牆之類的無關),但是都被mysqld給refuse掉了。

/etc/mysql/my.cnf裡沒有skip-networking,也把bind-address = 127.0.0.1注不註解對我從本機用mysql -h 127.0.0.1 -u user -p連線應該也沒有影響,使用者的mysql.user.host欄位亦被設為'%'。請問還有哪邊可能出問題?
Kavka
可愛的小學生
可愛的小學生
 
文章: 5
註冊時間: 週三 4月 20, 2005 6:22 pm

文章haocheng » 週二 6月 07, 2005 12:23 am

真糟糕,我也遇到一樣的問題耶,
我想要在Debian上面架設Roller來用,
但是MySQL這邊一直搞不定。

我也無法用mysql -h 127.0.0.1 -u user -p來連線,
會出現下面的錯誤:
ERROR 2003(HY000): Can't connect to MySQL Server on '127.0.0.1' (110)

而且我也把bind-address = 127.0.0.1這一行註解掉了,
不過好像還是沒有用,請問一下還有那裡可能出問題呢?

先謝謝各位的熱心回答囉 :)
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
haocheng
可愛的小學生
可愛的小學生
 
文章: 67
註冊時間: 週一 10月 11, 2004 10:44 am

文章訪客--larry » 週二 6月 07, 2005 7:57 am

因為我都是使用mysqlcc來操作mysql資料庫,對指令不熟。所以下面提供我所知道的方法。

1、在my.cnf註解了bind-address = 127.0.0.1這一行命令
2、重新啟動資料庫/etc/init.d/mysql restart。
3、建立一個可以對外連線的帳號-->在主機欄位處鍵入%字元。主機為%字元的帳號才被允許從遠端連線進來。
4、為上述帳號開啟權限,例如全局權限。

以小弟的經驗,在mysqlcc下經過上述操作之後,皆可從外面連線到資料庫伺服器。
訪客--larry
 

文章haocheng » 週二 6月 07, 2005 12:13 pm

我應該都有照做啊,可是還是不行... Orz
不過那個「全局權限」是什麼意思啊?

請問一下您可以用mysql -h 127.0.0.1 -u user -p
來連線到 localhost 端的 MySQL 嗎?
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
haocheng
可愛的小學生
可愛的小學生
 
文章: 67
註冊時間: 週一 10月 11, 2004 10:44 am

文章訪客-larry » 週二 6月 07, 2005 3:18 pm

您好

1、mysql內可能有數個資料庫。必須指定該帳號能操作哪一個資料庫,能在該資料庫做什麼事(新增、刪除、設計、、)。全局權限的意思是指定該使用者,能開啟mysql內的所有資料庫名稱,並有所有的權限。

2、我從putty操作,執行mysql -h 127.0.0.1 -u user -p可以登入資料庫。
訪客-larry
 

文章garfield » 週一 1月 02, 2006 2:43 pm

我也遇到不能由外部連到mysql , 但由內部網路卻很正常.
/etc/mysql/my.cnf 裡的 bind-address = 127.0.0.1 也 # 掉了.
但用 telnet 我的server IP 3306
卻沒有顯示半個字.
我想可能是防火牆的問題.
以下是用 iptables-save 列出來的設定值. 不知道有那裡設定有問題呢?
代碼: 選擇全部
# Generated by iptables-save v1.2.11 on Mon Jan  2 14:05:32 2006
*nat
:PREROUTING ACCEPT [2885:260579]
:POSTROUTING ACCEPT [4338:329786]
:OUTPUT ACCEPT [4338:329786]
COMMIT
# Completed on Mon Jan  2 14:05:32 2006
# Generated by iptables-save v1.2.11 on Mon Jan  2 14:05:32 2006
*mangle
:PREROUTING ACCEPT [71824:31505003]
:INPUT ACCEPT [71255:31419188]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [80636:66108295]
:POSTROUTING ACCEPT [80636:66108295]
COMMIT
# Completed on Mon Jan  2 14:05:32 2006
# Generated by iptables-save v1.2.11 on Mon Jan  2 14:05:32 2006
*filter
:INPUT ACCEPT [2090:388797]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2366:1567504]
-A INPUT -p tcp -m tcp --dport 3306
-A INPUT -p tcp -m tcp --dport 53
-A INPUT -p tcp -m tcp --dport 22
-A INPUT -p tcp -m tcp --dport 21
-A INPUT -p tcp -m tcp --dport 25
-A INPUT -p tcp -m tcp --dport 143
-A INPUT -p tcp -m tcp --dport 110
-A INPUT -p tcp -m tcp --dport 80
-A INPUT
-A OUTPUT -p tcp -m tcp --sport 3306
-A OUTPUT -p tcp -m tcp --sport 53
-A OUTPUT -p tcp -m tcp --sport 22
-A OUTPUT -p tcp -m tcp --sport 21
-A OUTPUT -p tcp -m tcp --sport 25
-A OUTPUT -p tcp -m tcp --sport 143
-A OUTPUT -p tcp -m tcp --sport 110
-A OUTPUT -p tcp -m tcp --sport 80
-A OUTPUT
COMMIT
# Completed on Mon Jan  2 14:05:32 2006
garfield
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週三 8月 17, 2005 11:50 am

文章訪客--larry » 週一 1月 02, 2006 5:24 pm

1、您的妨火牆政策全部開放,再一一擋,非常不安全,如果這一台電腦是直接連到internet,那麼這個防火牆規則的效果,與沒有防火牆結果可能幾乎相同。
2、您列出的規則,看不到「目標」,是不是您少列了甚麼。
3、建議用iptables -nvL列出來比較容易看。
訪客--larry
 

文章garfield » 週一 1月 02, 2006 6:13 pm

1.請問有何參考資料可以設定較安全的防火牆.
2.用iptables-save 列出的所以資料已全部貼在文章中, 或許是因不會設定, 而沒有所謂的"目標"
3.用 iptables -nvL 產生的資料
代碼: 選擇全部
Chain INPUT (policy ACCEPT 9551 packets, 13M bytes)
 pkts bytes target     prot opt in     out     source               destination
  148 11944            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3306
    0     0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53
   26  3067            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22
    0     0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21
 3033 4227K            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25
    0     0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:143
 1383 64767            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:110
 1812  222K            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
 9551   13M            all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 9711 packets, 14M bytes)
 pkts bytes target     prot opt in     out     source               destination
  116 10887            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:3306
    0     0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:53
   25  3525            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:22
    0     0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:21
 2218  127K            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:25
    0     0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:143
 1867 2360K            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:110
 2307 2601K            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:80
 9711   14M            all  --  *      *       0.0.0.0/0            0.0.0.0/0

garfield
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週三 8月 17, 2005 11:50 am

文章訪客--larry » 週一 1月 02, 2006 9:41 pm

您好

1、您的mysql問題,可以先關閉防火牆(/sbin/iptables inactive),試試看能否連線成功,若可以,則問題是防火牆。若不可以則可能是mysql設定問題,也可能是或不是防火牆。

2、防火牆的設定如果對手動設定不熟,可以先從安裝套件例如firestarter、、、等-->apt-get install firestarter,然後再以iptables -nvL觀察套裝軟體的手稿是怎麼設定的,如果有興趣,再將套件的規則轉成手稿。手動增減防火牆手稿。

3、防火牆手稿的資料很多,如果中文書籍的話,可到各大網路書店,鍵入iptables關鍵字,找一本書來研讀,中文網路資料(酷學園的系統安全討論版),例如http://phorum.study-area.org/viewtopic.php?t=28959 等
英文資料就多了,有些網站還根據您的需求提供手稿給您用(http://iptables-script.dk/index1.php)。

建議還不熟時,先從套件安裝,觀察並學習其寫法。再學著開始自己寫。
訪客--larry
 

文章訪客--larry » 週一 1月 02, 2006 10:05 pm

您的防火牆手稿,實在說,不知道會發生什麼事?但是其意義大概如下
1、您將input和output鍊的政策設定為ACCEPT---沒有符合任何一條規則的封包都放行。
2、您的這幾條規則都沒有指定target,是accpt、drop或reject都沒有交代,不知道會發生什麼事?沒有效或擋住?不知道?所以這幾條規則有沒有效果實在不知道,可能也是錯誤的規則。

3、比較安全的手稿大約是將所有policy設定為drop,然後再將要放行的的項目一一放行,但是防火牆script的要熟(放行lo本地迴路、isp的dns、認證、對外上網、對外寄信、收信、、、每一樣相關協定都要特別加以開啟才能正常運作各項軟體),否則可能一開始網路都連不上去、無法ftp。
4、比較方便但是安全性稍鬆的方法是,input管制(drop),output放行(accept),這種方式,規則比較容易設定。但是安全性比較不嚴謹。

5、建議先安裝防火牆套件學習+找相關書籍來學習。
訪客--larry
 

文章garfield » 週一 1月 02, 2006 11:43 pm

用這個指令 /sbin/iptables inactive
無法暫停iptables ,
在鳥哥的網站上找到用
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -t nat -F
清除 iptables 的規則後,
mysql 由外部連進來的只要是固定ip (adsl 固8 ) 就正常了,
但如果是撥接上網( adsl ) 會無法連上,
真是奇怪了, 一樣都是真ip , 怎會有不一樣的限制呢.
不是只有postfix才會用到網路黑名單??

看來要去仔細的研究防火牆的設定方法,
謝謝你提供的資料,
又有得忙了...
garfield
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週三 8月 17, 2005 11:50 am

下一頁

回到 debian server

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron