Linux下如何启用MySQL数据库远程访问

来源:互联网 发布:淘宝全球购物网 编辑:程序博客网 时间:2024/06/06 02:19

远程连接MySQL出于安全考虑,一般都关闭了远程访问,但有时候需要提供远程访问数据库的服务,下面我们快速学习下:

第一步:修改my.cnf文件

使用文本编辑器去编辑MySQL服务器的配置文件my.cnf

如果你使用Debian Linux,文件位置在: /etc/mysql/my.cnf

如果你使用Red Hat Linux/Fedora/Centos Linux,文件位置在: /etc/my.cnf

如果你使用FreeBSD,文件位置在: /var/db/mysql/my.cnf

如果使用VI编辑,直接使用命令

 # vi /etc/my.cnf

 第二步:如果文件打开,按照下面内容进行

 [mysqld] 

 确保skip-networking是被注释的,或者被删除,然后添加下面一行内容

 bind-address=你的服务器IP

 例如,你的服务器IP是65.55.55.2,然后需要配置例如如下的内容:

 [mysqld]

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

bind-address    = 65.55.55.2

# skip-networking

....

..

....

 

 

这里面

bind-address : 你需要绑定的IP地址.

skip-networking : 开启 skip-networking 选项可以彻底关闭MySQL的TCP/IP连接方式,在一些文档中也提到在单机运行的 MySQL 推荐开启该选项,现在看,不太靠谱。

 第三步:保存并且关闭文件

重启你的MySQL服务器,在命令行输出

# /etc/init.d/mysql restart

第四步:绑定远程IP地址的管理权限

连接MySQL服务器:

 $ mysql -u root -p mysql

 绑定权限到新的数据表(这一步可以借助phpmyadmin这类的工具简单完成,这里只是个例子)

 

如果我们需要绑定一个远程ip 202.54.10.20到新建的foo数据库下的bar用户中,在命令行中输入:

 mysql> CREATE DATABASE foo;

mysql> GRANT ALL ON foo.* TO bar@'202.54.10.20' IDENTIFIED BY 'PASSWORD';

 如何绑定一个已经存在的数据库呢?

mysql> update db set Host='202.54.10.20' where Db='webdb';

mysql> update user set Host='202.54.10.20' where user='webadmin';

 第四步:推出MySQL

输入下面的命令:

mysql> quit;

 

第五步:打开3306端口

需要将TCP端口3306开启,使用iptables或者BSD的pf 防火墙

 Linux下iptables的例子

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

 

或者如果你只需要允许特定的服务器,ip为10.5.1.3,可以这样:

 /sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp --destination-port 3306 -j ACCEPT

 或者仅仅允许自己子网内的远程连接范围192.168.1.0/24

 /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT

 

最后保存所有规则

 # service iptables save

 FreeBSD / OpenBSD pf 的规则( /etc/pf.conf)

 pass in on $ext_if proto tcp from any to any port 3306

 

或者允许允许ip:10.5.1.3

pass in on $ext_if proto tcp from 10.5.1.3 to any port 3306  flags S/SA synproxy state

 第六步:测试

 在你远程主机上面打开cmd,输入:

mysql -u webadmin –h 65.55.55.2 –p

 在这里

-u webadmin: webadmin 是MySQL服务器的用户

-h IP or 服务器名称: 65.55.55.2 is MySQL 服务器IP地址

-p : 密码

 你同样可以使用telnet来连接到3306端口

 $ telnet 65.55.55.2 3306

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 荣耀8密码忘了怎么办 华为4x开不了机怎么办 华为指纹和密码解锁解不开怎么办 华为荣耀5x死机怎么办 华为荣耀开不了机怎么办 荣耀10开不了机怎么办 乐视pro3变砖了怎么办 手机升级后开不了机怎么办 华为g750开不了机怎么办 手机变砖怎么办插电没反应 变砖手机不通电怎么办 小米手机充电口坏了怎么办 小米2s尾插坏了怎么办 小米手机充电插口坏了怎么办 一条网线上两个亚马逊账号怎么办 加拿大28输20万怎么办 买家账户被亚马逊关闭余额怎么办 京东自营物流慢怎么办 京东退货不给退怎么办 刚付款不想要了怎么办 淘宝卖家拒绝退货退款怎么办 投诉不成立卖家怎么办 淘宝卖家被买家投诉卖假货怎么办 天猫三天未发货怎么办 天猫申请换货卖家不处理怎么办 天猫新疆不发货怎么办 天猫商城少发货怎么办 下单了卖家不发货怎么办 天猫超市漏发货怎么办 天猫购物几天不发货怎么办 天猫总是不发货怎么办 申请退款后卖家又发货了怎么办 天猫拍后申请退款卖家发货怎么办 淘宝上没下单却收到了货怎么办 被买家投诉三无产品怎么办 阿里巴巴卖家虚假发货怎么办 淘宝捡到便宜但是卖家不发货怎么办 被工商局查到三无产品怎么办 淘宝买到三无产品电器怎么办 天猫商城被投诉怎么办 床板有虫子咬人怎么办