Linux中开启mysql远程访问功能

coinone 2012-03-28

1、确认3306是否对外开放,mysql默认状态下是不开放对外访问功能的。查看的办法如下:

# netstat -an | grep 3306   
tcp        0      0 127.0.0.1:3306          0.0.0.0:*                LISTEN

     从结果可以看出,mysql的3306端口只监听本地的连接,这样就阻碍了外部IP对该数据库的访问,修改的办法如下,进入到mysql的配置文件所在目录(/etc/mysql/my.cnf)下,找到文件中的如下内容:

# Instead of skip-networking the default is now to listen only on    
# localhost which is more compatible and is not less secure.    
bind-address   = 127.0.0.1

    将bind-address注释掉,或者改成你想要使用的客户端主机IP

2、确认客户端用户是否具有访问权限

    为了让访问mysql的客户端的用户有访问权限,我们可以通过如下方式为用户进行授权:

grant all privileges on *.* to 创建的用户名 @"%" identified by "密码"; 

flush privileges; #刷新刚才的内容

#格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"; 
#@ 后面是访问mysql的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。
#同时也可以为现有的用户设置是否具有远程访问权限。如下: 

use mysql; 

update db set host = '%' where user = '用户名'; (如果写成 host=localhost 那此用户就不具有远程访问权限)
 
FLUSH PRIVILEGES; 

查看结果,执行: 

use mysql; 

select host,user,password from user;
 

相关推荐