我在PHP 7.0上运行MySQL版本8.
当我尝试从PHP连接到我的数据库时,我收到以下错误:
连接错误:SQLSTATE [HY000] [2054]服务器请求客户端未知的身份验证方法
怎么解决?
我正在尝试在我的Mac上安装vanilla论坛,为此我只是从mysql命令行创建了一个数据库和一个用户:
mysql> CREATE DATABASE vanilla;
Query OK, 1 row affected (0.00 sec)
mysql> create user 'vanilla_user3'@'localhost' IDENTIFIED BY 'vanilla_password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON * . * TO 'vanilla_user3'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用以下代码进行连接:
$con=mysqli_connect("localhost","vanilla_user3","vanilla_password","vanilla");
if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是我得到一个错误说
Warning: mysqli_connect(): (HY000/2002): No such file or directory in /Users/kramer65/Sites/vanilla/info.php on …
我正在使用php 7.2.2和mysql 8.0.
当我尝试连接正确的凭据时,我收到此错误:
PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
Run Code Online (Sandbox Code Playgroud)
需要帮助来解决问题.
我不能用 root 登录,我认为 root 的密码可能被更改。但我也无法更改 root 的密码。
Mysql 版本为 v8.0.16。
我曾经--init-file在 mysqld 启动时指定了 alter sql
alter user 'root'@'localhost' identified by 'mynewpassword'
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
我使用了--skip-grant-tables --user=mysql所以我可以添加一个新用户,我的新用户可以工作。我尝试更改 root,但它再次失败。
alter user 'root'@'localhost' identified by 'mynewpassword'
Run Code Online (Sandbox Code Playgroud)
这是表用户的内容
mysql> alter user 'root'@'localhost' identified by 'mynewpassword';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法?
我在laravel 8中创建了一个新的laravel项目。我已经正确设置了Sail安装,本地数据库连接一切正常,但是当我尝试使用sail连接我的数据库时,它给了我一个错误
SQLSTATE[HY000] [2002] 连接被拒绝(SQL: select * from information_schema.tables where table_schema = laravel8 and table_name = migrations and table_type = 'BASE TABLE')
我已经清除了我的配置和缓存文件。
我收到了这个错误:
PDO :: __ construct():服务器请求的客户端未知的身份验证方法[caching_sha2_password]
我知道MySQL在版本8中更改了他们的身份验证方法,但是我应该如何更新到最新的驱动程序并在doctrine(Symfony 4)中与它连接?
我尝试将我的PHP登录更改为使用caching_sha2_password到mysql_native_password,如下所示.现在我根本无法登录MySQL.我重新启动mysqld无济于事.
有什么想法可以补救吗?
我按照这篇文章php mysqli_connect:客户端未知的身份验证方法[caching_sha2_password]
mysql> ALTER USER 'elstatuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysecretpassword';
ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 50, found 49. Created with MySQL 80012, now running 80013. Please use mysql_upgrade to fix this error.
[root@han ~]# mysql_upgrade --force -uroot -p
Enter password:
Checking server version.
Running queries to upgrade MySQL server.
Upgrading system table data.
Checking system database.
mysql.columns_priv OK
mysql.component OK
mysql.db OK
mysql.default_roles OK
mysql.engine_cost OK
mysql.func OK
mysql.general_log OK
mysql.global_grants …Run Code Online (Sandbox Code Playgroud) 我使用的是docker,我有一个Laravel Framework 5.5.25容器和其他带有mysql Ver 8.0.11 for Linux on x86_64(MySQL社区服务器 - GPL)的容器.在我的docker compose配置中我有这个:
version: "2"
services:
mysql:
image: mysql
ports:
- "3307:3306"
command: --sql_mode=""
Run Code Online (Sandbox Code Playgroud)
因此,当Laravel尝试连接到MySql时出现此错误:
SQLSTATE [HY000] [2054]服务器请求客户端未知的身份验证方法(SQL:select*from
我花了几天时间试图解决这个问题,我完全被困住了......
我已在运行 Mojave (10.14.3) 的 Mac 操作系统上设置了 Apache Web 服务器(版本 2.4.34),并安装了当前版本的 MySQL 社区服务器 (8.0.15)。正如我所确定的(从命令行),两者都运行完美。我安装了 PHP 7.1.23。当我使用以下代码创建 .php 文件并将其放入我的 Sites 目录中,然后在 Safari 中转到http://localhost/~dave/hello.php时,我收到此错误:
“警告:mysqli::__construct():(HY000/2002):第 7 行 /Users/dave/Sites/hello.php 中没有这样的文件或目录连接失败:没有这样的文件或目录”。
hello.php 中的代码:
<?php
$servername = "localhost";
$username = "dave";
$password = "*****";
//Create connection
$conn = new mysqli($servername, $username, $password);
//Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的一切,包括其他两篇类似帖子中的建议(这一篇:我的数据库用户存在,但我仍然得到一个(HY000/2002):没有这样的文件或目录,这一篇:PHP警告: mysqli::__construct(): (HY000/2002): 没有这样的文件或目录 (Debian GNU/Linux 9) ),并且我无法使用 php 连接到 MySQl。特别是,我检查了 php 信息页面,mysqli …
线程中有类似的问题,但在这里我不得不提到这个问题,因为作为一个新手学习者,我无法弄清楚并解决这个问题。对不起,我的英文太长了,希望你能帮我。
顺便说一下,我已经在我的 Windows 上安装了 XAMPP 控制面板,并且我已经在 localhost/phpmyadmin(浏览器)中创建了几个数据库。今天,我从这个链接下载并安装了 MySQL-installer-community 。我按照所有步骤安装并正确配置了它。(默认端口号是 33060,我在安装 MySQL 安装程序时不会更改它)。
但后来由于某种原因,我不得不接近我以前的 XAMPP 控制面板并尝试启动 APACHE 和 MySQL。APACHE 已启动,但 MySQL 无法启动并自动终止。后来我发现 XAMPP Panel 中的 MySQL 运行在相同的端口上,因为我在配置 MySQL 安装程序时没有更改端口号。因此,我通过在 my.ini 文件中进行更改,将 XAMPP 控制面板上的默认 MySQL 端口号(即 3306)更改为 3307,如嵌入图像中所示: 更改 my.ini 文件
后来,当我重新启动 XAMPP 控制面板时,MySQL 启动时没有出现任何错误,请参见此处,但浏览器上的访问仍然被拒绝。有关图像,请参阅: 在浏览器中拒绝访问
但是,即使在浏览器中拒绝访问,我也可以通过 shell 获取数据库。 通过Shell访问数据库
因此,我正在寻求帮助,为什么我无法通过浏览器上的 localhost/phpmyadmin 访问数据库?请指导我彻底!
我刚刚安装了 xampp,并且正在 phpMyAdmin 上本地运行 MySQL 数据库。我正在尝试通过 .php doc 输出数据库的内容,但是在尝试这样做时我收到了两个警告:
警告:mysqli::__construct():服务器请求了客户端未知的身份验证方法 [caching_sha2_password] 在 C:\xampp\htdocs\footfallTracker\test.php 中的第 20 行
警告:mysqli::__construct():(HY000/2054):服务器请求了客户端未知的身份验证方法 C:\xampp\htdocs\footfallTracker\test.php 在线 20 连接失败:服务器请求的身份验证方法未知客户端
这是我正在使用的代码:
<?php
$servername = "localhost";
$username = "root";
$password = "*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19";
$dbname = "footfall_tracking";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT ID, Location, Date FROM footstep_count";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row …Run Code Online (Sandbox Code Playgroud) mysql ×9
php ×6
docker ×2
mysql-8.0 ×2
mysqli ×2
xampp ×2
doctrine-orm ×1
laravel ×1
laravel-5.5 ×1
macos ×1
pdo ×1
phpmyadmin ×1
privileges ×1
symfony ×1