PHP 5.4共享服务器上的旧身份验证,无需编辑mysql服务器即可修复
我刚刚将developmentbox的PHP升级到最新版本,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(“您的
5.4.5
。这个开发机器连接到一个远程的MySQL服务器,它位于我从托管公司租用的共享服务器上
尝试使用simpleMySQL\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执行该命令就成功了,不知道为什么会这样。我会编辑一下你的答案,并将其标记为已回答。非常感谢你的帮助!