运维之Ubuntu 开启mysql远程连接

 

版本号

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

思路:

ping 远程地址 判断远端服务网络正常,ping不通请检测网络
>ping 192.168.99.100
正在 Ping 192.168.99.100 具有 32 字节的数据:
来自 192.168.99.100 的回复: 字节=32 时间telnet 192.168.99.100 3306
正在连接192.168.99.100…无法打开到主机的连接。 在端口 3306: 连接失败
登录远端服务器,查看远端服务器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
编辑后重启mysql ,再次查看3306端口
server mysql restart
sudo netstat -an|grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
授权访问,用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; #让权限立即生效
查看防火墙设置
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等工具远程访问了。

注意:ubantu里面uwf防火墙和iptables有的都开启,关闭了uwf后注意查看iptables,特别是iptables里面的iptables.rules :只需保留 dport 3306 -j ACCEPT这行 不能有 3306的drop行 和sport行,按网上很多例子会让你怀疑人生的