远程计算机打开 mysql 服务器:
#/etc/init.d/mysql.server start
本地计算机连接远程 mysql服务器:
./mysql -h "192.168.1.244" -u root -p
发生错误:
ERROR 1130 (HY000): Host '192.168.1.100' is not allowed to connect to this MySQL server
原因分析:
因为mysql服务器出于安全考虑,默认只允许本地登录数据库服务器。
解决办法
1、在控制台执行 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;
3、在mysql控制台执行命令中的 'root'@'%' 可以这样理解: root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword'是给授权用户指定的登录数据库的密码;另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限,
4、不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容
到此还是在客户端还是连接不上
此时检查下防火墙是否开启:
/etc/init.d/iptables status
会得到一系列信息,说明防火墙开着。则关闭:
/etc/init.d/iptables stop
另外直接在/etc/sysconfig/iptables中增加一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
永久关闭:
chkconfig --level 35 iptables off
记住防火墙一定要打开你指定的远程端口哦,如果是3306就要把它加入到防火墙,如
#/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
然后保存:
#/etc/rc.d/init.d/iptables save
查看打开的端口:
# /etc/init.d/iptables status