我知道有一些类似的问题,事实上我已经阅读了所有(9)个问题.
但是,它们都没有解决我的问题.
我有一个共享托管包(最低限度).我的包中包含的是域名,以及托管MySQL服务器的单独IP地址.对于开发,我正在使用http://localhost/PHP 5.4的开发服务器,而我正在使用我的托管包中的MySQL服务器.
问题出现在我的电脑上,因为我安装了PHP 5.4,但是我的网络主机安装了PHP 5.2.17并且不会升级.MySQL服务器在MySQL 5.1.50上.
幸运的是,phpMyAdmin具有内置的"更改密码"功能.
phpMyAdmin中有两个用于更改密码的哈希选项:
我使用MySQL 4.1+选项更改了密码,并确认更新成功.
该个人资料已更新.
SET PASSWORD = PASSWORD( '***' )
但是,当我执行此查询时:
SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));
Run Code Online (Sandbox Code Playgroud)
它告诉我密码长度仍然是16.输出:
Run Code Online (Sandbox Code Playgroud)1 1 16
所以问题仍然存在.
无法连接到数据库.SQLSTATE [HY000] [2000] mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+.请使用管理工具使用命令SET PASSWORD = PASSWORD('your_existing_password')重置密码.这将在mysql.user中存储一个新的,更安全的哈希值.如果在PHP 5.2或更早版本执行的其他脚本中使用此用户,则可能需要从my.cnf文件中删除旧密码标志
当我在phpMyAdmin中使用DBO用户登录时,我也尝试过这些查询:
SET SESSION old_passwords=0;
[phpMyAdmin reloads to the home screen, but the value remains = 1]
SET GLOBAL old_passwords = 0;
#1227 - Access denied; you need the SUPER privilege for this operation
FLUSH PRIVILEGES;
#1227 - Access denied; you need the RELOAD privilege for this operation
Run Code Online (Sandbox Code Playgroud)
这与用于设置DBO用户的webhost菜单中所述的内容相矛盾:
数据库所有者
创建新数据库时,需要指定数据库所有者(DBO)用户,该用户具有
对数据库的完全管理员访问权限.
这是我必须接受我的虚拟主机吗?或者可以由我的DBO用户解决?否则可以在PHP中绕过它?(因为它适用于PHP 5.2.17但不适用于PHP 5.4)
Ozz*_*zzy 32
虽然SET SESSION old_passwords=0;没有在phpMyAdmin中工作.
我下载了MySQL GUI Tools并使用MySQL Query Browser在非DBO用户上执行相同的命令:
SET SESSION old_passwords = 0;
SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));
现在回来了:
1 0 41
Run Code Online (Sandbox Code Playgroud)
所以我只是更改了密码:
SET PASSWORD = PASSWORD('my_old_password')
现在PHP 5.4 PDO与该用户连接到数据库!
| 归档时间: |
|
| 查看次数: |
25668 次 |
| 最近记录: |