• 当前位置: 主页 > Linux安装教程 > 常见问题 >

    Linux上mysql开启远程连接方法_解决MySQL不允许远程访问的方法

    时间:2016-03-26 12:06来源:未知 作者:Linux先生 举报 点击:
    新安装的MySQL是默认不开户远程访问权限的,也就不能外部连接MySQL。这样对想远程调用MySQL的数据很不方便。下面我们来看下如何设置允许远程连接MySQL数据库。
    还没有安装Mysql的可以参考怎么在阿里云Linux主机上安装mysql
    一般来说mysql安装时都是关闭远程连接的,但是如果一台电脑需要多个网站连接,而这些网站又不是自己服务器上,那么就需要把mysql数据库的远程开启,开启mysql远程登录的用户都是存储在mysql数据库中的user表中。默认情况下,Mysql为了安全起见是不支持远程访问和连接的。不过有的时候,工作需要你要从家里或者网页来访问Mysql,本文就介绍下怎么在Linux系统上给Mysql创建一个远程连接的账户,支持远程访问.


    任务: MySQL服务远程访问权限

    你需要执行下面的这些命令,让Mysql运行支持远程连接.

    步骤# 1: 登录到SSH 

    首先通过ssh登录到Mysql数据库服务器去,然后使用root进入Mysql:

    ssh user@server1.cyberciti.biz
    ### login as the root using su or sudo ##
    su
    #sudo -s

    或者直接使用ssh登录

    ssh root@server1.cyberciti.biz

    步骤# 2: E编辑my.cnf文件

    连接成功之后,我们就来编辑Mysql的配置文件:my.cnf 

    • 如果你的系统是Debian Linux 那文件位置是:/etc/mysql/my.cnf .
    • 如果你的系统是 Red Hat Linux/Fedora/Centos Linux 那文件位置是: /etc/my..
    • 如果你的系统是 FreeBSD 那文件位置是: /var/db/mysql/my.cnf .

    然后我们就编辑/etc/my.cnf, 执行:
    # vi /etc/my.cnf

    步骤 # 3: 打开编辑后,我们找到这行(vi里面,先按下esc,然后输入/[mysqld],再enter,即可查找,按n可以看下一个):

    [mysqld] 

    然后把跳过的IP设置好,让帮到的IP为你自己要进入连接的IP,

    bind-address=YOUR-SERVER-IP

    比如,你的MySQL 服务器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 : 不再监听TCP/IP 连接. 所有的Mysql交互都要通过Unix sockets. 如果你只想本地请求的话强烈建议开启,因为我们现在是开启远程连接,所以在这里我们就给注释掉,在前面加上#号就可以了.

    步骤# 4 保存文件重启Mysql服务

    如果是Debian / Ubuntu Linux系统,输入下面的命令重启Mysql服务
    # /etc/init.d/mysql restart
    如果是RHEL / CentOS / Fedora / Scientific Linux系统,输入下面的命令重启Mysql服务
    # /etc/init.d/mysqld restart
    如果是FreeBSD系统,输入下面的命令重启Mysql服务
    # /usr/local/etc/rc.d/mysql-server stop
    # /usr/local/etc/rc.d/mysql-server start

    或者
    # /usr/local/etc/rc.d/mysql-server restart

    步骤# 5 给远程IP授权

    连接到Mysql
    $ mysql -u root -p mysql

    那我们就授权给新的数据库

    我们想远程IP为202.54.10.20,通过Mysql用户bar访问数据库foo,那我们需要在Mysql(mysql> prompt)下输入:

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

    那怎么给已存在的库授权呢?

    加入你需要从远程IP202.54.10.20通过Mysql用户webadmin访问webdb库,那命令就是这样的了

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

    步骤# 6: 退出MySQL

    退出Mysql,使用:mysql> exit

    步骤# 7: 打开防火墙3306端口

    我们需要打开iptables或者BSD的pf防火墙3306 TCP端口

    通用Mysql3306端口的iptables(vi /etc/sysconfig/iptables)防火墙规则

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

    或者你只允许web那台服务器(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

     最后重启防火墙使配置生效(RHEL / CentOS):
    # service iptables save
    #或者是
    # /etc/init.d/iptables restart

    下面是一个简单的FreeBSD / OpenBSD / NetBSD pf 防火墙规则(vi /etc/pf.conf)

    通用BSD系统打开3306端口:

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

    或者只允许web服务器(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

    步骤# 8: 测试远程连接

    从你自己的机器上测试连接:
    $ mysql -u webadmin –h 65.55.55.2 –p
    参数说明,

    • -u webadmin: webadmin 是Mysql的用户名
    • -h IP或者主机名: 65.55.55.2 是MySQL的IP或正式主机域名
    • -p :弹出输入密码窗口

    还可以使用telnet或nc命令来测试3306连接:
    $ echo X | telnet -e X 65.55.55.2 3306
    或NC
    $ nc -z -w1 65.55.55.2 3306
    输出结果:

    Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!
    推荐内容
  • 极速快乐8 飞速赛车平台 吉林快3 快乐赛车 三分快3 飞速赛车平台 福建快3走势 澳彩网彩票注册 幸运赛车 澳洲幸运8