我正在开发一个必须连接到Azure MySql服务器的Laravel产品。我在.env
文件中有以下配置:
/。ENV
DB_CONNECTION=mysql
DB_HOST=hostname.mysql.database.azure.com
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=username@hostname
DB_PASSWORD=1234567890
但Laravel无法正确连接到MySQL,并提出此错误
SQLSTATE[HY000] [1045] Access denied for user 'username'@'123.123.123.123' (using password: YES) (SQL: select * from `users`)
似乎Laravel已将hostname
替换为username
中的服务器ip。如何使Laravel不能正确地将hostname
和connect
替换为Azure MySQL。
答案 0 :(得分:1)
Azure默认情况下需要SSL连接。您可以在Azure中将其关闭或使用:
'options' => array(
\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
\PDO::MYSQL_ATTR_SSL_KEY => '/certs/client-key.pem',
\PDO::MYSQL_ATTR_SSL_CERT => '/certs/client-cert.pem',
\PDO::MYSQL_ATTR_SSL_CA => '/certs/ca.pem',
),
答案 1 :(得分:0)
问题可能与MySQL服务器本身的用户权限有关。您可以尝试使用username
@ %
(具有任何主机名的用户名)来创建新的MySQL用户。
E.g。
CREATE USER 'newuser'@'%' IDENTIFIED BY 'some-password';
GRANT ALL PRIVILEGES ON your_database . * TO 'newuser'@'%';
FLUSH PRIVILEGES;
然后使用新的用户名和密码更新您的Laravel .env
文件。