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;