Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP 5.4共享服务器上的旧身份验证,无需编辑mysql服务器即可修复_Php_Mysql_Shared Hosting - Fatal编程技术网

PHP 5.4共享服务器上的旧身份验证,无需编辑mysql服务器即可修复

PHP 5.4共享服务器上的旧身份验证,无需编辑mysql服务器即可修复,php,mysql,shared-hosting,Php,Mysql,Shared Hosting,我刚刚将developmentbox的PHP升级到最新版本,5.4.5。这个开发机器连接到一个远程的MySQL服务器,它位于我从托管公司租用的共享服务器上 尝试使用simpleMySQL\u connect('myserver.com','user','password')连接到我的远程MySQL服务器会导致以下错误: 警告:mysql_connect():mysqlnd无法使用旧的不安全身份验证连接到mysql 4.1+。请使用管理工具使用命令SET password=password(“您的

我刚刚将developmentbox的PHP升级到最新版本,
5.4.5
。这个开发机器连接到一个远程的MySQL服务器,它位于我从托管公司租用的共享服务器上

尝试使用simple
MySQL\u connect('myserver.com','user','password')
连接到我的远程MySQL服务器会导致以下错误:

警告:mysql_connect():mysqlnd无法使用旧的不安全身份验证连接到mysql 4.1+。请使用管理工具使用命令SET password=password(“您的现有密码”)重置密码。这将在mysql.user中存储一个新的、更安全的哈希值。如果该用户用于PHP 5.2或更早版本执行的其他脚本,则可能需要从第2行的file.PHP中的my.cnf文件中删除旧密码标志

简单地说,正如建议的那样,只是执行:

SET PASSWORD = PASSWORD('my-password');
不会改变任何事情。 执行时也同样适用

SET SESSION old_passwords=FALSE;
经过一段时间的搜索,我意识到,我需要对MySQL服务器进行深入访问才能解决这个问题,,而我没有。正在尝试执行此查询:

UPDATE mysql.user SET Password=PASSWORD('my-password')
  WHERE User='my_user' AND Host='my-server';
FLUSH PRIVILEGES;
简单地告诉我以下错误:

1142-针对表“user”的用户“u0112918”@“www10.aname.net”的更新命令被拒绝


到目前为止,要求公司为我执行查询的请求没有成功。因此,我的问题是,是否有任何方法可以在不涉及MySQL服务器的情况下在客户端解决此问题?

Hm,尝试通过PhpMyAdmin以外的工具执行以下查询,例如MySQL Workbench或通过shell:

SET SESSION old_passwords=0; 
SET PASSWORD = PASSWORD('passwordString');
应该允许您在用户表上更改自己的密码,而不具有DML权限


编辑:由于它没有解决问题-当数据库启用“只读”时,您需要超级权限来更改(甚至您自己的)密码()

执行该查询时,它仍然会给我相同的错误。。Super wierd.很抱歉,您不能对该用户使用任何数据库更新/插入?摘自mysql手册:SET PASSWORD语句为现有mysql用户帐户分配密码。启用只读系统变量时,除了可能需要的任何其他权限外,还需要超级权限才能使用SET PASSWORD。通过MySQL workbench执行该命令就成功了,不知道为什么会这样。我会编辑一下你的答案,并将其标记为已回答。非常感谢你的帮助!