【问题标题】:php mysql ssl connect failure with access denied errorphp mysql ssl 连接失败,访问被拒绝错误
【发布时间】:2019-06-28 18:24:37
【问题描述】:

我正在尝试使用 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 设置,并且它是相同的。 所以我无法理解这里可能是什么问题。我非常感谢任何帮助/指针来解决这个问题。

规格: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) 作为输出。 不知道为什么我的应用程序没有选择常量。

【问题讨论】:

  • 不要为您的端口参数添加空格:--port=8090。然后,您必须授予用于连接的用户和 IP 的访问权限。
  • 我可以通过控制台为同一个用户连接,所以这不完全是权限问题。我假设由于 Yii 配置存在一些问题,但我无法弄清楚是什么。
  • 你没有在问题中显示任何 Yii 配置。
  • 可能是我没有正确表达我的问题,请阅读更新。

标签: php mysql ssl yii2


【解决方案1】:

打开新终端

sudo /etc/init.d/mysql stop ... MySQL Community Server 5.7.8-rc is stopped

sudo mysqld_safe --skip-grant-tables & 这将跳过所有授予级别的权限并以安全模式启动 mysql 有时进程会因为

而卡住

grep: write error: Broken pipe 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> quit再见

sudo /etc/init.d/mysql stop

..180102 11:37:12 来自 pid 文件 /var/run/mysqld/mysqld.pid 的 mysqld_safe mysqld 结束。 * 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+ 版本之后,将密码列替换为 mysql.user 表中的 name authentication_string。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多