zoukankan      html  css  js  c++  java
  • 如何设置MySql Server远程访问(Debian Linux)

    1. 登录Mysql Server:  

    $mysql -u root -p

    2. 检查网络,Server是否允许远程连接:  

    mysql> show variables like '%skip_networking%';  此值应该为‘OFF’,一般默认值即为'OFF', 表示允许TCP/IP连接
    skip_networking: 只允许通过一个套接字文件(Unix/Linux系统)或通过命名管道(Windows系统)进行本地连接,不允许ICP/IP连接; 这提高了安全性,但阻断了来自网络的外部连接和所有的Java客户程序(Java客户即使在本地连接里也使用TCP/IP).在值可以在/etc/mysql/my.cnf中进行设置.

    3. 绑定权限到mysql.user数据表:

    mysql> use mysql;   
    mysql> GRANT ALL ON *.* TO user@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;   
    #允许任何IP地址('%'字符即表示这个意思)的PC, 用user帐户和password密码来远程访问整个MySQL Server('*.*'所有的所有)  
    #必须加类似这样的帐户,才可以远程登陆. root帐户是无法远程登陆的,只可以本地登陆.
    #绑定此server下某个特定数据库, 比如只可以远程访问itest表
    #mysql> GRANT ALL ON itest.* TO user@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

    4. 修改Mysql配置文件:

    $sudo vim /etc/mysql/my.cnf
    #注释bind-address或者改为指定IP地址

    5. 保存文件,重启service

    $sudo /etc/init.d/mysql restart

    6. 防火墙规则下,打开3306端口

    $sudo iptables -L
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    #如果出现以上,则表示没有防火墙规则,所有端口已开放
    
    #如果存在防火墙规则
    $sudo vim /etc/sysconfig/iptables
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
    Tips:不要把这两条规则添加到防火墙配置的最后一行,否则会导致防火墙启动失败, 可以添加到22端口下边. 
    ####################################
    # Firewall configuration written by system-config-firewall
    ... ...
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
    -A INPUT -j REJECT –reject-with icmp-host-prohibited
    ... ...
    ####################################
    Tips: INPUT <--> RH-Firewall-1-INPUT 根据配置文件使用不同的链
    $sudo service apache2 restart
    #或者$sudo /etc/init.d/iptables restart 重启防火墙
  • 相关阅读:
    jQuery中的promise实例
    你可能不需要单页面应用
    单页面和多页面应用场景总结
    ES6的模块暴露与模块引入
    export default 和 export的区别
    Android中获取网页表单中的数据实现思路及代码
    Pojo和JavaBean的区别(转载)
    MyEclipse默认编码为GBK,修改为UTF8的方法
    JSP中getParameter和getAttribute区别
    内部跳转(请求转发)和外部跳转(重定向)的区别?
  • 原文地址:https://www.cnblogs.com/liutie1030/p/4157933.html
Copyright © 2011-2022 走看看