用localhost连接数据库可以成功,而用IP连接就不行,为什么?

xsp 2005-06-29 03:01:20
$dbh = mysql_connect('localhost:3306','root','');
//可以连接成功

$dbh = mysql_connect('10.10.10.136:3306','root','');
//10.10.10.136是本机IP,这样就连接不成功,为什么?

说明:数据库mysql.user表中有3条记录,除了host字段不同外,其余字段都一样。host字段值分别是:localhost、10.10.10.136、%
这个%代表什么?
...全文
522 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveconan 2005-06-30
  • 打赏
  • 举报
回复
err……windows啊?
看花眼了
loveconan 2005-06-30
  • 打赏
  • 举报
回复
--skip-networks关掉
hope1983 2005-06-29
  • 打赏
  • 举报
回复
可能版本不同.
MYSQL用户默认从本机登陆.
你要用grant 语句来令你的用户通过IP地址连接的...
>进入mysql,创建一个新用户xuys:
>格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";
如:
grant usage
ON test.*
TO testuser@IP地址;
xsp 2005-06-29
  • 打赏
  • 举报
回复
TO hope1983(亢龙有悔浪子回头) :
您说的/etc/hosts文件在哪儿呀?对不起,我是初学。

另:我的环境是windows2000 + IIS + php4.3.11 + mysql 4.1
hope1983 2005-06-29
  • 打赏
  • 举报
回复
修改/etc/hosts文件
[root] vi /etc/hosts
127.0.0.1 localhost localhost



本机ip localhost localhost

xsp 2005-06-29
  • 打赏
  • 举报
回复
其实是有密码的,上述代码是为了简单,所以没写。
TO xuzuning(唠叨) :
我按您说的把host的次序改了,结果还是localhost可以连接,而用IP就不能连接。

我想把web服务器和数据库服务器分离,不用IP不行呀,怎么办?
dixing 2005-06-29
  • 打赏
  • 举报
回复
如果只是自己用,没有密码,就直接用mysql_connect()行了.省掉所有参数.
xuzuning 2005-06-29
  • 打赏
  • 举报
回复
其实像你这样不加口令的连接根本就不要用参数,直接
$conn = mysql_connect();
就可以了

这个%代表什么?
是任意主机

如果host字段值分别是:localhost、10.10.10.136、%
由于同是root用户且都没有口令,mysql找到root用户并发现host不对时就返回报错了
你把host的次序改为:10.10.10.136、localhost、%
就会发现localhost不能连接了

你只能保留一个root用户,并只允许host为localhost。最好有口令,没有也可以,因为只是自己用。任何来自外部的攻击都需要把连接代码写在你的机器上执行,这样话可以说是几乎没有可能性。包括从同一局域网

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧