【发布时间】:2018-04-04 09:23:24
【问题描述】:
我可以从 Sequel Pro(参见 this post)和控制台通过提供不带任何证书的 --ssl 选项连接到 MySQL/MariaDB:
$ mysql -u myusername -p -h 10.123.45.67 --ssl
Enter password:
Welcome to the MariaDB monitor.
没有 --ssl 的连接是不可能的,因为用户需要 SSL:
$ mysql -u myusername -p -h 10.123.45.67
Enter password:
ERROR 1045 (28000): Access denied for user 'myusername'@'10.123.45.67' (using password: YES)
如何在 PHP 中使用 PDO 实现相同的功能?
我已经研究了过去几个小时,但没有找到解决方案。我尝试修改提供给 PDO 构造函数的 dsn 和 options 参数,但没有成功。我要么最终得到错误代码 1045(拒绝访问)或 2002(无法通过套接字连接):
$pdo = new PDO('mysql:dbname=...;host=10.123.45.67;port=3306', 'myusername', '...');
PHP 致命错误:未捕获的 PDOException:SQLSTATE[HY000] [1045] 用户“myusername”@“10.123.45.67”的访问被拒绝(使用密码:YES)
将PDO::MYSQL_ATTR_SSL_KEY(和其他)添加为 PDO 构造函数的选项,导致 2002(这些选项没有意义,因为我没有密钥等)。虽然我不知道如何以与从控制台或在 Sequel Pro 内部相同的方式设置连接。
【问题讨论】:
-
我们总是乐于帮助和支持新的编码员,但您需要先帮助自己。 :-) 在doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用并提供a Minimal, Complete, and Verifiable example。阅读How to Ask 一个好问题。请务必take the tour 并阅读this。
-
@JayBlanchard 我已经更新了我的问题。还有什么您认为有帮助的吗?
-
向我们展示您尝试连接的 PHP 代码,并向我们提供错误的全文。
-
如问题中所述,这是我尝试使用 MYSQL_ATTR_SSL_KEY 等常量的方法,但这没有任何意义,因为我没有证书,而且我显然也不需要它们。所以除了这些常数之外,肯定还有别的东西。能否请您删除“重复”链接?
-
问题是关于 Sequel Pro 和 mysql 控制台使用 --ssl 选项做什么,以及我如何可以在那里连接但不能从 PDO 连接。当给定用户需要 SSL 登录时,我无法在没有 SSL 的情况下访问,这一点很明显。但同样:我没有证书/密钥/等。提供(与链接的 Sequel Pro 问题相同)。