Linux上安装Mysql后除了本机其他机器不能访问的问题(zhuan)

http://blog.sina.com.cn/s/blog_a338027c0101esbs.html

http://niutuku.com/tech/Mysql/237638.shtml

http://www.jb51.net/LINUXjishu/454409.html

********************************************

本机可以登陆了。但是其他机器的客户端登陆报错。
ERROR 1130 (00000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQ
L server

首先查看了iptables的设置,添加开放了3306端口
iptables -A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT

service iptables save
service iptables restart

还是其他机器不能访问,估计是MYSQL权限问题。

在本机登陆
mysql -h localhost -u root -pkaishi
show databases;
use mysql;
select Host, User, Password from user;
+-----------------------+------+-------------------------------------------+
| Host | User | Password |
+-----------------------+------+-------------------------------------------+
| localhost | root | *18F54215F48E644FC4E0F05EC2D39F88D7244B1A |
| localhost.localdomain | root | |
| localhost.localdomain | | |
| localhost | | |
+-----------------------+------+-------------------------------------------+
可以看到如上结果,只有localhost才设置了访问的权限

进入mysql,创建一个新用户user: 
格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码"; 查看结果,执行: 
use mysql; 
select host,user,password from user;

可以看到在user表中已有刚才创建的user用户。host字段表示登录的主机,其值可以用IP,也可用主机名,将host字段的值改为%就表示在任何客户端机器上能以user用户登录到mysql服务器,建议在开发时设为%。

update user set host = '%' where user = 'sillycat';

flush privileges;
修改了权限后需要执行以上语句生效

********************************

vi /etc/sysconfig/iptables

在后面添加

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

service iptables restart

发现还是不行

最终发现记录要添加在

-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT 这一条前面 再次重启 OK

****************************************

1、问题及异常

ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@75d634ea -- APPARENT DEADLOCK!!! Complete Status:

Managed Threads: 3

Active Threads: 3

Active Tasks:

2、查找原因

费劲周知,确定是MySQL权限的问题

3、解决过程

1》 mysql -uroot -proot mydbName

2》 grant all privileges on *.* to wangs@‘%’ identified by ‘123456’;

3》 flush privileges;

4》 exit;

5》 /etc/init.d/mysql restart

4、命令的说明

进入 mysql ,用户为 root,密码为 root,数据库为 mydbName,-u 意为用户,-p 意为密码,

增加用户 wangs,所有权限,数据库为 *,后面的 .* 不可少,% 代表对所有远程的 IP 地址,如果要限定 IP 地址的话,单独写上 IP 地址,

密码是 123456,注意引号 ‘ 不可少,用来表示是字符串。

以上就是Linux系统下无法访问mysql的解决办法,用户在遇到同样故障时可根据问题的异常状况来找出原因,然后再对症下药的解决问题。

 

posted @ 2016-11-30 08:40  zhao1949  阅读(4208)  评论(0编辑  收藏  举报