您的位置:首页 > 数据库 > MySQL

设置mysql允许外部IP连接的解决方法

2013-12-12 14:31 375 查看
mysql默认情况下,只允许localhost连接,如果需要外部IP连接到mysql,需要向mysql数据库里的“user”表里添加相关授权。
例如:让newuser用户使用newpwd密码从IP:192.168.1.3主机链接到mysql服务器

具体步骤:

1. linux下登陆mysql 直接输入指令mysql -uroot -predhat如果有主机选择就输入-h172.25.X.X 注意-p后面输入密码时候不要空格,直接-p后输入密码。

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

3. mysql>flush privileges;

grant语法:

grant 权限名(所有的权限用all) on 库名(*全部).表名(*全部) to '要授权的用户名'@'%'(%表示所有的IP,可以只些一个IP) identified by "密码";
身份检查使用user表(Host, User和Password)3个范围列执行。服务器只有在user表记录的Host和User列匹配客户端主机名和用户名并且提供了正确的密码时才接受连接。
在user表Host值的指定方法:
* Host值可以是主机名或IP号,或'localhost'指出本地主机。

* 你可以在Host列值使用通配符字符“%”和“_”。

* Host值'%'匹配任何主机名,空Host值等价于'%'。它们的含义与LIKE操作符的模式匹配操作相同。例如,'%'的Host值与所有主机名匹配,而'%.mysql.com'匹配mysql.com域
的所有主机。

远程使用Navicat for mysql 客户端软件连接 局域网内其它mySql数据库时,连接出现 2003-Can’t connect to MySQL on ’10.52.12.92’(10061)错误,是由于MySQL不准许远程连接。
修改方法如下:

1:在服务端MySQL文件夹下找到my.ini文件。修改bind-address=127.0.0.1 为 bind-address=0.0.0.0

2:重新启动MySQL服务。

域名解析时间过长,导致无法连接

在hosts文件 上添加src 的hostname
Vi /etc/hosts
10.51.14.193 archermind

1. my.cnf 配置文件中 skip-networking 被配置

skip-networking 这个参数,导致所有TCP/IP端口没有被监听,也就是说出了本机,其他客户端都无法用网络连接到本mysql服务器

所以需要把这个参数注释掉。

2.my.cnf配置文件中 bindaddress 的参数配置

bindaddress,有的是bind-address ,这个参数是指定哪些ip地址被配置,使得mysql服务器只回应哪些ip地址的请求,所以需要把这个参数注释掉。

3.防火墙的原因

通过 /etc/init.d/iptables stop 关闭防火墙

我的问题,就是因为这个原因引起的。关闭mysql 服务器的防火墙就可以使用了。

4.碰到一个极端情况,不是很理解

把GRANT 语句中的 GRANT ALL PRIVILEGES ON *.* TO
'root'@'%' I 通配符% 换成制定IP地址就可以了,可能跟hostname有关吧

出现Access denied for user 'root'@'localhost' (using password: YES) in 怎么办啊

第一步
删除c:\windowns下面的my.ini
第二步
打开c:\mysql\bin\winmysqladmin.exe 输入用户名 和密码
第三步 在dos下 输入 mysqld-nt -remove 删除服务
在接着输入 mysqld-nt -install
第四步 输入mysql 启动成功。
其它可参考的方法:
1.看看hosts文件中localhost是不是指向127.0.0.1
2.如果是没启动mysql服务,则可运行net start mysql。
3.一些相关命令:
mysqld-nt --install #启动Mysql
mysql #运行Mysql
mysql -h ipAddress -u username -p
或者:直接去bin里点mysqld.exemysqld-nt.exe,看下它的进程能否正常运行,如不行,再去控制面板,服务里去启动它,看下是什么错误。如果不行,就在添加删除里删去mysql,然后再重装mysql,一般都能解决问题,可以在安装前备份一下DATA。
Error: Can't connect to MySQL server on 'localhost' (10061)
Errno.: 2003
错误编号:2003
问题分析:
无法连接到 MySQL 服务器,可能的情况为:
1、MySQL 服务没有启动,一般是在异常的情况下 MySQL 无法启动导致的,比如无可用的磁盘空间,my.ini 里 MySQL 的 basedir 路径设置错误等;
2、MySQL 服务器资源紧张,导致无法连接。
解决方法:
1、如果你是虚拟主机用户(购买的空间),则联系空间商检查 MySQL 是否正常启动,并确认 MySQL 的配置信息(是否为 localhost);
2、如果你是独立主机用户(拥有管理主机权限),则按下面步骤检查:
1)检查磁盘空间是否还有剩余可用空间,尽量保持有足够的磁盘空间可用。
2)检查 my.ini 里的 basedir (MySQL 安装地址) 和 datadir (数据目录存放地址)等参数设置是否正确,然后重新启动下 MySQL 服务。
还有一种方法是将服务器的windows补丁。
微软9月9日发布了TCP/IP更新补丁(KB967723),如果服务器开启自动更新或者有自动更新软件下载更新了这个补丁,那么就会出现这个问题。
有人可能会问,为什么9号出现的补丁,到现在才发现问题?
大家都知道,服务器不是每天都重启的,有的服务器可能一个月或者一年半载重启一次,有的可能在9月9日以后重启过服务器,所以补丁生效了(我个人这么认为)。


linnux 下出现这种情况

执行grant语句,把locahost改为本地的IP地址

flush;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: