有时候需要远程连接mysql数据库,默认是不可以的,大家可以参考下面的方法,解决下。环境为centos6.5,MySQL版本是mysql-5.5.35
1、在mysql服务所在主机上执行 mysql -u root -p mysql,系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台,这个命令的第一个mysql是执行命令,第二个mysql是系统数据名称,不一样的。
2、在mysql控制台执行 GRANT ALL PRIVILEGES ON *.* TO ‘root'@'%' IDENTIFIED BY ‘MyPassword' WITH GRANT OPTION;
然后执行FLUSH PRIVILEGES;
说明:在mysql控制台执行命令中的 ‘root'@'%' 可以这样理解: root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword'是给授权用户指定的登录数据库的密码(需要自行修改);另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限,GRANT具体操作详情见:http://dev.mysql.com/doc/refman/5.1/en/grant.html
3、不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容 ;或者是在其他主机上面执行mysql -h {远程主机IP} -uroot -p,然后输入上面的那个‘MyPassword'(注意需要跟上面输入的一致)。
注意:如果按照上述方法设置之后还是无法远程连接,请首先检查系统防火墙是否已关闭,例如对于centos7:
systemctl status firewalld
关闭并且系统重启后不开启防火墙的方法:
systemctl stop firewalld
systemctl disable firewalld
centos6系统的防火墙是iptables,请使用类似service iptables stop;chkconfig off iptables之类的命令关闭并防止系统重启后启动防火墙。