今天弄了下mysql的幾個(gè)安全設(shè)置: 只允許本地登錄,允許ssh通過遠(yuǎn)程登錄
1.my.cnf
#skip-networking
bind-address = 127.0.0.1
此項(xiàng)設(shè)置允許 tcp/ip 訪問,但是只有127.0.0.1 有可以訪問,如果把skip-networking 開啟。則只能通過sock連接。
順便提下,
mysql -h localhost -u eric -p saker
mysql -h 127.0.0.1 -u eric -p saker
這兩個(gè)命令在skip-networking 開啟的時(shí)候localhost能正常登錄mysql,但是127.0.0.1不能。具體原因如下:
大多數(shù)程序?qū)⒅鳈C(jī)名localhost和IP地址127.0.0.1 視作“本地服務(wù)器”的同義詞。
但在UNIX系統(tǒng)中,MySQL 有所不同:
出現(xiàn)localhost時(shí),MySQL會(huì)嘗試使用一個(gè)Unix domain socket 文件來連接本地服務(wù)器。
要強(qiáng)制使用TCP/IP連接到本地服務(wù)器,那就使用IP地址 127.0.0.1 而不是主機(jī)名localhost。
可以通過指定 --protocol=tcp 選項(xiàng)來強(qiáng)制使用TCP/IP進(jìn)行連接
TCP/IP 連接的默認(rèn)端口號(hào)是 3306.
2.mysql 設(shè)置好了,只允許本地登錄。但是允許通過ssh遠(yuǎn)程登錄
原理:無論是windows還是 linux,第一步就是本地與mysql服務(wù)器建立一個(gè)ssl tunnel,
利用ssh命令在本機(jī)開個(gè)33xx的端口,這個(gè)端口為隧道的入口端口,出口就是數(shù)據(jù)庫(kù)的3306(如果默認(rèn)端口沒被修改的話),
linux如下:
ssh -NCPf root@localaddress -L 3388:mysqlserver:3306
參數(shù)解釋
-C 使用壓縮功能,是可選的,加快速度。
-P 用一個(gè)非特權(quán)端口進(jìn)行出去的連接。
-f 一旦SSH完成認(rèn)證并建立port forwarding,則轉(zhuǎn)入后臺(tái)運(yùn)行。
-N 不執(zhí)行遠(yuǎn)程命令。該參數(shù)在只打開轉(zhuǎn)發(fā)端口時(shí)很有用(V2版本SSH支持)
1)如果是windows 下用navicat for mysql 之類的數(shù)據(jù)庫(kù)管理軟件,比較簡(jiǎn)單,
在"常規(guī)"選項(xiàng)卡填寫主機(jī)名為localhost或127.0.0.1,遠(yuǎn)程數(shù)據(jù)庫(kù)的賬號(hào)和密碼
"SSH"選項(xiàng)卡填寫遠(yuǎn)程服務(wù)器的主機(jī)名和ssh端口號(hào),及登錄的用戶和密碼,測(cè)試連接是否成功
2)windows 暫時(shí)沒找出類似
ssh -NCPf root@localaddress -L 3388:mysqlserver:3306
命令安靜模式下建立ssh tunnel。 我用了putty試了下。連接可以成功。呆后續(xù)研究
3.mysql 主從備份使用ssh tunnel,下面摘自別人文章,待驗(yàn)證
- 1). 備份初始數(shù)據(jù)。
- 關(guān)閉所有相關(guān)的數(shù)據(jù)更新操作程序,或者對(duì)要備份的數(shù)據(jù)庫(kù)加鎖,避免更新,然后用 tar 備份到從服務(wù)器上。或者可以用mysqlhotcopy。
- 2). 需要在主服務(wù)器上,配置日志功能
- 這需要重啟服務(wù),使其啟用日志功能。配置文件 my.cnf 可以放在 mysql 的安裝目錄中。
[mysqld]
server-id=1
log-bin=mydb-bin
binlog-do-db=mydb
重啟服務(wù)后,可以在數(shù)據(jù)目錄下,看見該數(shù)據(jù)庫(kù)的日志文件,并且可以通過 "show master status",查看到主服務(wù)器的狀態(tài)。 - 3). 設(shè)置備用用戶
-
mysql>GRANT REPLICATION SLAVE ON *.* TO backup@'localhost' IDENTIFIED BY 'backup';
這里之所以用本地連接,是因?yàn)楹竺娌捎?ssh 隧道連接 mysql - 4). 設(shè)置從服務(wù)器
-
[mysqld]
server-id=2
master-host=127.0.0.1
master-port=3307
master-user=backup
master-password=backup
master-connect-retry=10
report-host=127.0.0.1
- 5). 遠(yuǎn)程連接隧道
-
ssh -f -N -4 -L 3307:127.0.0.1:3306 mysqlm@remotemysql
- 6). 啟動(dòng)從服務(wù)器
- 可以通過 "show processlist",查看備份情況。并且可以查看mysql的錯(cuò)誤日志,了解是否連接正常,同步備份功能是否工作正常。
4.因?yàn)槭褂脃ii框架在寫一個(gè)項(xiàng)目,所以遠(yuǎn)程mysql禁止直接登錄后,yii的配置文件也要相應(yīng)修改,linux下比較簡(jiǎn)單,可參看以下
http://www.yiiframework.com/forum/index.php/topic/30678-mysql-through-ssh-tunnel/
windows待續(xù)......
posted on 2012-12-17 18:14
小果子 閱讀(11511)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
學(xué)習(xí)筆記 、
SQL