为什么php PDO在连接到远程托管的mysql数据库时使用与mysql_connect()使用的主机名不同的主机名?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么php PDO在连接到远程托管的mysql数据库时使用与mysql_connect()使用的主机名不同的主机名?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1306字,纯文字阅读大概需要2分钟。
内容图文
![为什么php PDO在连接到远程托管的mysql数据库时使用与mysql_connect()使用的主机名不同的主机名?](/upload/InfoBanner/zyjiaocheng/904/97241d296b7c4dacbda237189ef2b8e1.jpg)
我在两个不同的服务器上使用了mysql数据库和php / apache:让我们说hostphp.domain.com和hostmysql.domain.com.
在mysql服务器上,我设置了一个用户“my_user”,其权限是从特定主机“hostphp.domain.com”连接到“my_database”db.
当我使用mysql_connect连接到它时,它做对了.但是当我通过php PDO这样做时,我收到此错误:
SQLSTATE[42000] [1044] Access denied for user 'my_user'@'%' to database 'my_database'
我做了一些测试,我发现问题是…… @’%’,mysql拒绝连接,因为“my_user”没有从任何主机连接的权限.
此外,我试图使用错误的密码使用mysql_connect连接以查看错误,我得到了这个:
Could not connect: Access denied for user 'my_user'@'hostphp.domain.com' (using password: YES).
区别在于.. @’%’和… @’hostphp.domain.com’.
所以这是我的问题,为什么php pdo在连接到远程主机时不会声明主机名? (或者做错了).
谢谢,抱歉我的英语.
编辑.
一些代码示例,这不起作用:
try {
$pdo = new PDO(
'mysql:host=hostmysql.domain.com;port=3306;dbname=my_database',
'my_user',
'my_pass'
);
} catch (PDOException $e) {
die($e->getMessage());
}
但是这样可行:
$conn = mysql_connect('hostmysql.domain.com', 'my_user', 'my_pass');
if (!$conn) {
die('Could not connect: ' . mysql_error());
}
解决方法:
您已使用mysql_connect成功连接到主机,但没有错误,因为您没有尝试选择数据库.
您的用户可能无权访问您的数据库.
尝试运行mysql_select_db(“my_database”);连接到主机后,您应该得到相同的错误.
内容总结
以上是互联网集市为您收集整理的为什么php PDO在连接到远程托管的mysql数据库时使用与mysql_connect()使用的主机名不同的主机名?全部内容,希望文章能够帮你解决为什么php PDO在连接到远程托管的mysql数据库时使用与mysql_connect()使用的主机名不同的主机名?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。