xiaoguozi's Blog
Pay it forword - 我并不觉的自豪,我所尝试的事情都失败了······习惯原本生活的人不容易改变,就算现状很糟,他们也很难改变,在过程中,他们还是放弃了······他们一放弃,大家就都是输家······让爱传出去,很困难,也无法预料,人们需要更细心的观察别人,要随时注意才能保护别人,因为他们未必知道自己要什么·····
今天弄了下mysql的几个安全设置: 只允许本地登录,允许ssh通过远程登录

1.my.cnf
#skip-networking
bind-address = 127.0.0.1

此项设置允许 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

 

这两个命令在skip-networking 开启的时候localhost能正常登录mysql,但是127.0.0.1不能。具体原因如下:


大多数程序将主机名localhost和IP地址127.0.0.1 视作“本地服务器”的同义词。

 

但在UNIX系统中,MySQL 有所不同:
出现localhost时,MySQL会尝试使用一个Unix domain socket 文件来连接本地服务器。

要强制使用TCP/IP连接到本地服务器,那就使用IP地址 127.0.0.1 而不是主机名localhost。
可以通过指定 --protocol=tcp 选项来强制使用TCP/IP进行连接

TCP/IP 连接的默认端口号是 3306.

2.mysql 设置好了,只允许本地登录。但是允许通过ssh远程登录
原理:无论是windows还是 linux,第一步就是本地与mysql服务器建立一个ssl tunnel,
利用ssh命令在本机开个33xx的端口,这个端口为隧道的入口端口,出口就是数据库的3306(如果默认端口没被修改的话),
linux如下:
ssh -NCPf root@localaddress -L 3388:mysqlserver:3306

参数解释

-C    使用压缩功能,是可选的,加快速度。 
-P    用一个非特权端口进行出去的连接。 
-f    一旦SSH完成认证并建立port forwarding,则转入后台运行。 
-N    不执行远程命令。该参数在只打开转发端口时很有用(V2版本SSH支持)


1)如果是windows 下用navicat for mysql 之类的数据库管理软件,比较简单,
在"常规"选项卡填写主机名为localhost或127.0.0.1,远程数据库的账号和密码
"SSH"选项卡填写远程服务器的主机名和ssh端口号,及登录的用户和密码,测试连接是否成功
2)windows 暂时没找出类似
ssh -NCPf root@localaddress -L 3388:mysqlserver:3306
命令安静模式下建立ssh tunnel。 我用了putty试了下。连接可以成功。呆后续研究

3.mysql 主从备份使用ssh tunnel,下面摘自别人文章,待验证
1). 备份初始数据。
关闭所有相关的数据更新操作程序,或者对要备份的数据库加锁,避免更新,然后用 tar 备份到从服务器上。或者可以用mysqlhotcopy。
2). 需要在主服务器上,配置日志功能
这需要重启服务,使其启用日志功能。配置文件 my.cnf 可以放在 mysql 的安装目录中。
[mysqld] 
server-id=1
log-bin=mydb-bin
binlog-do-db=mydb
重启服务后,可以在数据目录下,看见该数据库的日志文件,并且可以通过 "show master status",查看到主服务器的状态。
3). 设置备用用户
mysql>GRANT REPLICATION SLAVE ON *.* TO backup@'localhost' IDENTIFIED BY 'backup';
这里之所以用本地连接,是因为后面采用 ssh 隧道连接 mysql
4). 设置从服务器
[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). 远程连接隧道
ssh -f -N -4 -L 3307:127.0.0.1:3306 mysqlm@remotemysql  
6). 启动从服务器
可以通过 "show processlist",查看备份情况。并且可以查看mysql的错误日志,了解是否连接正常,同步备份功能是否工作正常。
4.因为使用yii框架在写一个项目,所以远程mysql禁止直接登录后,yii的配置文件也要相应修改,linux下比较简单,可参看以下
http://www.yiiframework.com/forum/index.php/topic/30678-mysql-through-ssh-tunnel/
windows待续......
posted on 2012-12-17 18:14 小果子 阅读(11279) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记SQL

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理