mysql设置允许其它机器连接


  mysql设置允许其它机器连接

  (2011-10-25 15:27:25)

  转载▼

  未经设置的mysql不允许其它机器连接,可能报如下错误

  Lost connection to MySQL server at 'reading initial communication packet', system error: 111

  Host '*.*.*.*(连接数据的机器ip)' is not allowed to connect to this MySQL server

  解决方法:

  需要经过两步设置

  1.设置mysql允许其它机器连接

  #vi /etc/mysql/my.cnf

  把bind-address=127.0.0.1注释掉,前面加#

  2.授权其它机器操作数据库

  进入mysql命令行操作

  mysql -uroot -p123456(123456是密码)

  mysql>GRANT ALL PRIVILEGES ON 数据库名.* TO root@"%" IDENTIFIED BY "123456";123456是密码

  数据库名根据访问的实际数据库名修改,也可以设置所有的数据库用*代替

  这样其它机器就可以访问指定的数据库了

  mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

  mysql> FLUSH PRIVILEGES;

  ERROR 1130: Host ***.***.***.*** is not allowed to connect to this MySQL server

  登陆mysql

  首先 use mysql;

  按照别人提供的方式update的时候,出现错误。

  mysql> update user set host='%' where user = 'root';

  ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

  然后查看了下数据库的host信息如下:

  mysql> select host from user where user = 'root';

  +-------------+------+

  | host | user |

  +-------------+------+

  | % | root |

  | 127.0.0.1 | root |

  | MicroLetter | |

  | MicroLetter | root |

  | localhost | |

  +-------------+------+

  host已经有了%这个值,所以直接运行命令:

  mysql>flush privileges;

  以下以Ubuntu系统为例,总结了自己遇到过的几种安装Mysql后外部机器不能访问的问题原因。

  1、最常见的是用户权限问题。

  Mysql安装后,默认只允许本机访问Mysql,通过以下命令可以查看:

  mysql>use mysql;

  mysql>select user, host from user;

  +-----------------------------------+----------------------------------+

  | user | host |

  +-----------------------------------+----------------------------------+

  | root | localhost |

  | root | 127.0.0.1 |

  | root | ubuntu |

  +----------------------------------+-----------------------------------+

  如上所示,使用update修改其中某一条记录的host字段值为'%',或者新增一条记录且host字段值为‘%’。

  2、防火墙原因

  有些机器默认开了防火墙,也有可能导致外部机器不能访问3306端口,以Ubuntu为例,可以通过iptables修改防火墙配置

  vi /etc/sysconfig/iptables

  -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

  编辑iptables,新增上面一条记录。根据不同系统或版本差异,更详细的修改方法可以上网搜索查找。

  3、绑定地址有误

  如果上面两种情况都不存在或不能解决,可以使用netstat命令查看mysql服务绑定的ip,如果绑定的是127.0.0.1,则外部机器也不能访问mysql。可以通过修改Mysql配置文件解决。以Ubuntu系统为例,使用apt-get方式安装的Mysql,配置文件默认位置通常是/etc/mysql/mysql.conf.d/mysqld.cnf

  使用sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf命令编辑该文件

  注释掉以下一行即可:

  bind-address = 127.0.0.1

  使用 mysql --help 查看关于MYSQL对应 配置文件my.cnf 搜索顺序,windows 和linux 上都是该命令查看

  linux 上可以使用 mysql --help|grep my.cnf 过滤查看

  一般linux 上都放在 /etc/my.cnf


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM