我正尝试从我的 PHP Yii 应用程序使用 ssl 连接到远程 Mysql 服务器。 使用以下命令从 yii 控制台执行此操作时,我能够建立连接并能够查询数据库
./yii script.
但是,当我尝试使用以下命令在服务器上运行时,完全相同的脚本不起作用
php yii serve --port = 8090
我收到以下错误:
yii\base\ErrorException: mysqli_real_connect(): (HY000/1045): Access denied for user 'userName'@'IP' (using password: YES).
我已经通过从两个地方打印 phpInfo()
验证了 php 设置,它是相同的。
所以我无法理解这里可能是什么问题。我将非常感谢解决此问题的任何帮助/指示。
specification : php 7.1.28, Yii2
更新 1
有问题的应用程序有自己的特定数据库,我正在使用 PDO 连接到它(没问题)。然后是这个远程 Mysql 服务器,由于 SSL 对等匹配问题,我无法使用 PDO 连接它。我已经通过做尝试了这个解决方案
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => False
但是常量不存在于 PDO 中。但是,如果我这样做了
php -r ‘var_dump(PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT);’
我得到 int(1014) 作为输出。 不确定为什么我的应用程序没有选择常量。
最佳答案
打开新终端
sudo /etc/init.d/mysql stop ... MySQL Community Server 5.7.8-rc is stopped
sudo mysqld_safe --skip-grant-tables
&这将跳过所有授予级别的权限并以安全模式启动 mysql 有时进程卡住只是因为
grep:写入错误:管道损坏 180102 11:32:28 mysqld_safe 记录到“/var/log/mysql/error.log”。
只需按 Ctrl+Z 或 Ctrl+C 即可中断并退出进程
mysql -u root
欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。您的 MySQL 连接 ID 是 2 服务器版本:5.7.8-rc MySQL Community Server (GPL)
版权所有 (c) 2000、2015,Oracle 和/或其附属公司。保留所有权利。
Oracle 是 Oracle Corporation 和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。
键入“帮助;”或 '\h' 寻求帮助。输入'\c'清除当前输入语句。
mysql> use mysql;
读取表信息以完成表名和列名您可以关闭此功能以使用-A 更快地启动
数据库已更改
mysql> update user set authentication_string=password('password') where user='root';
查询正常,4 行受影响,1 条警告(0.03 秒)匹配的行:4 更改的:4警告:1
mysql> flush privileges;
查询正常,0 行受影响(0.00 秒)
mysql> 退出
再见
sudo /etc/init.d/mysql stop
..180102 11:37:12 mysqld_safe mysqld 来自 pid 文件/var/run/mysqld/mysqld.pid 已结束。 * MySQL Community Server 5.7.8-rc 已停止 arif@ubuntu:~$ sudo/etc/init.d/mysql start .. * MySQL Community Server 5.7.8-rc 已启动
mysql -u root -p
Enter password:
欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。您的 MySQL 连接 ID 是 2 服务器版本:5.7.8-rc MySQL Community Server (GPL)
在 mysql 5.7+ 版本之后,列 password 被 mysql.user 表中的名称 authentication_string 替换。
关于php mysql ssl 连接失败,访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56811649/