Ubuntu 开启mysql远程连接


版本号

  • ubuntu 15.10
  • mysql 5.5

各个版本具体设置可能有些差异,但思路是一样的。

思路:

  1. ping 远程地址 判断远端服务网络正常,ping不通请检测网络
    >ping 192.168.99.100
    正在 Ping 192.168.99.100 具有 32 字节的数据:
    来自 192.168.99.100 的回复: 字节=32 时间<1ms TTL=64
    
  2. telnet 远程地址 端口号,拒绝了访问3306端口
    >telnet 192.168.99.100 3306
    正在连接192.168.99.100...无法打开到主机的连接。 在端口 3306: 连接失败
    
  3. 登录远端服务器,查看远端服务器3306端口是否开启,如果是127.0.0.1:3306,修改MySQL配置文件,将bind_address = 127.0.0.1注释掉或修改成0.0.0.0,每个人的mysql配置文件地址有可能不同
    sudo netstat -an|grep 3306
    tcp        0      0 127.0.0.1:3306            0.0.0.0:*               LISTEN
    sudo vim /etc/my.cnf
    
            [client]
    	#password       = your_password
    	port            = 3306
    	socket          = /tmp/mysql.sock
    	
    	[mysqld]
    	port            = 3306
    	socket          = /tmp/mysql.sock
    	datadir = /usr/local/mysql/var
    	skip-external-locking
    	key_buffer_size = 64M
    	max_allowed_packet = 1M
    	table_open_cache = 256
    	sort_buffer_size = 1M
    	net_buffer_length = 8K
    	read_buffer_size = 1M
    	read_rnd_buffer_size = 512K
    	myisam_sort_buffer_size = 16M
    	thread_cache_size = 32
    	query_cache_size = 32M
    	tmp_table_size = 64M
    	table_open_cache = 256
    	#bind-address = 127.0.0.1
    
    
  4. 编辑后重启mysql ,再次查看3306端口
    server mysql restart
    sudo netstat -an|grep 3306
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
    
  5. 授权访问,用root身份登录到mysql,使用grant命令分配权限,如果操作所有库就把 database_name.* 改成 *.* ,user_name是用户名,%是所有ip地址可访问,如果限制固定ip访问就改成ip,user_password是密码,
    mysql -uroot -p
    mysql> grant all on database_name.* to user_name@'%' identified by 'user_password';
    mysql> flush privileges;     #让权限立即生效
    
  6. 查看防火墙设置
    sudo iptables -L -n //查看列表
     Chain INPUT (policy ACCEPT)
     target     prot opt source               destination         
     ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
     ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
     ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
     ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
     DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306    
    sudo vim /etc/iptables.rules #编辑防火墙规则
     -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT    #修改3306端口DROP为ACCEPT 如果没有就添加这个条
    sudo iptables-restore < /etc/iptables.rules #使防火墙规则生效
    sudo iptables -L -n  #查看规则是否生效
     Chain INPUT (policy ACCEPT)
     target     prot opt source               destination         
     ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
     ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
     ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
     ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
     ACCEPT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
    

    现在就可以通过navicat等工具远程访问了。


常常是最后一把钥匙打开了门