test
test
- 娱乐乐园,
作者 climby 发布于 2003-07-01 分类:数据库技术
我用win2000的操作系统,PHP和MYSQL都配置正常了。
MYSQL在命令行的方式能用用户名和密码登陆。可是PHP程序用该用户名和密码却无法在本地机登陆。但PHP程序上传到服务器上后,不做任何改动却能打开数据库。服务器上的数据库是从本地机上导入的,都一样。
我在本地机上用PHP打开数据库,显示如下警告:
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server. Consider upgrading MySQL client in G:wwwvhost.inc on line 19
Could not connect
用户名和密码都没有问题的。
php 源程序为:
$config[mysql_host]="localhost";
$config[mysql_user]="mao";
$config[mysql_pass]="mao_12345";
$config[mysql_db]="mao";
$vhost_link = mysql_connect ($config[mysql_host], $config[mysql_user], $config[mysql_pass]) or die ("Could not connect");[/COLOR]
mysql_select_db ( $config[mysql_db], $vhost_link);
红色文字即为 第19行(抱错行)
请行家帮我分析分析。
奇怪的是,同样的程序,上传到服务器上就没有问题。
还有,如果在本地机上将数据库密码改为空,php程序中密码也改为空
php 程序则能正常打开数据库。
逛论坛交流:我的mysql哪里有问题?
应该是你本地的root用户没有设置密码的缘故
同样,询问一下,你在命令行的语句是?
因为在mysql安装以后会有如下几个用户
user host password 说明
root localhost 标准的root用户
% localhost 匿名用户,本地主机
root % 用户名是root,任意主机用户
% % 任意主机,匿名用户
而你加密,估计是加在了第三个用户上面,而不是第一个,而程序是要求一个用户,所以出错。至于服务器,你上传的只是你的数据资料,用户资料你是不可能上传的(除非主机是你自己的^_^)
看我修改以后的内容
那么你进入mysql.user表,看一下有几个用户已经它们的主机和密码是什么?
有好几个用户,分别为
主机名 | 用户名| 密码
localhost | root | 54545648(第三项为加密密码我就用随意数字代替)
% | root | 564564656
localhost | | (用户名和密码都为空)
% | | (用户名和密码都为空)
localhost | mao | 56456456
我将其他所有用户都删除,只留下如下用户:
主机 | 用户名 |
% | root (第一个用户)
localhost | mao (第二个用户)
然后尝试我的程序,仍然出现如下错误:
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server. Consider upgrading MySQL client in G:wwwvhost.inc on line 19
Could not connect
高手帮帮我啊,我为了这个问题头都弄晕了;
我还是搞不定啊,请高手帮帮我!
实在让人搞不懂的是:
当在MYSQL中把MAO的口令改为空,在PHP程序中也改为空,那么程序就能顺利登陆数据库,如果口令不为空,就显示如下警告(肯定不是口令错误):
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server. Consider upgrading MySQL client in f:inetpubwwwrootvhost.inc on line 19
Could not connect
如果你使用update方式对mysql.user表的用户修改密码,必须使用password函数而不是直接修改,如:
update user set password=password("1234") where user="root";是对的
update user set password="1234" where user="root";是错误,这样的结果事实上1234被反编译就不知道是什么了
但是无论如何,在mysql的password字段,看到的是一长串对密码经过加密的字符串,也就是说,你看到的不是你原来密码的样子
8 条回复
回复