Tom*_*ger 2 mysql xampp remote-access
我正在XAMPP/WinXP上运行WordPress的本地副本以进行开发,但是希望保持与远程数据库的连接.无论我尝试什么,我都会收到"建立数据库连接错误".
在同一台PC上,我可以使用任意数量的mySQL客户端连接到远程mySQL数据库,在mySQL端,用户和数据库都设置为接受来自任何通配符域的传入请求.我也可以轻松地从我的PC上ping远程数据库服务器(虽然我不知道如何从WITHIN XAMPP中执行此操作).
XAMPP是否拥有无法通过外部世界进入的小宇宙?或者有什么东西我清楚地忽略了不让我联系?
错误
Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:553) in C:\xampp\htdocs\dbtest.php on line 5
Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in C:\xampp\htdocs\dbtest.php on line 5
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
Run Code Online (Sandbox Code Playgroud)
编辑
感谢@Michael建议我创建一个简单的连接脚本,这样我就可以更好地了解被抛出的实际错误.这表明它与mySQL中的old_password设置有关.有关如何解决此问题的完整说明,请参阅下面的答案.
这是我放在我的xampp\htdocs
文件夹中并测试出来的测试脚本:
<?php
$mysqli = new mysqli('my.server.address', 'user_name', 'password', 'database_name');
if ($mysqli->connect_error){
die ("Connect error: " . $mysqli->connect_error );
}
Run Code Online (Sandbox Code Playgroud)
我不清楚为什么这会成为我的XAMPP安装上的一个问题,因为我也在服务器的本地盒子上运行PHP 5.3.x并且没有遇到那些问题.但是,它与我在"旧密码"加密模式下运行的mySQL服务器有关.较新版本的PHP不允许这些类型的连接,因此您需要更新mySQL服务器以使用较新的密码加密.假设您可以控制mySQL服务器,以下是步骤.如果你不这样做,那就超出了我的知识范围.
找到所调用的mysql服务器的配置文件my.cnf
.我找到了我的/etc/my.cnf
.你可以用它来编辑它sudo nano /etc/my.cnf
寻找一条说明old_passwords=1
并改变的行old_passwords=0
.您现在告诉服务器下次运行时,并要求使用PASSWORD()命令加密密码,它使用新的41个字符加密而不是16个字符的"旧"样式加密
现在你必须重新启动你的mysql服务器/服务.YMMV,但在Fedora上很容易完成sudo service mysqld restart
.检查操作系统的重启mysql守护程序或服务的说明
现在我们必须user
在mysql中实际编辑我们的表.所以打开一个mysql的交互式shell(在你可以输入的服务器上mysql -uYourRootUsername -pYourRootPassword
)
切换到mysql
数据库.这是包含服务器操作和身份验证的所有好东西的数据库.您必须具有root访问权限才能使用此数据库.如果您获得"拒绝访问",那么您就是SOL.抱歉.use mysql;
将切换到该数据库
现在我们想要更新给你悲伤的用户.最终你可能想要更新所有用户,但是现在,我们只关注那些抛出错误的用户.update user set Password=password('YOUR_PASSWORD') where User='YOUR_USERNAME';
现在,您只需要告诉mysql在该用户尝试连接时使用新密码进行身份验证.flush privileges;
.
你应该好好去!
归档时间: |
|
查看次数: |
9143 次 |
最近记录: |