我在 Windows 10 x64 机器上安装了 easyphp/devserver (v17.0)。使用表和测试以使用简单的 php 文件存储远程数据(数据库非常新)。我正在尝试为我的项目设置对我的数据库的访问(最好使用 PDO)。
通过mysql命令设置所有数据库:
CREATE database arduDB;
CREATE USER 'Atmega'@'localhost';
GRANT USAGE on *.* to 'Atmega'@'localhost';
GRANT ALL PRIVILEGES ON arduDB.* TO 'Atmega'@'localhost';
CREATE USER 'Atmega'@'%';
GRANT USAGE on *.* to 'Atmega'@'%';
GRANT ALL PRIVILEGES ON arduDB.* TO 'Atmega'@'%';
FLUSH PRIVILEGES;
在这里一切都好。
但是无法使用 PDO 访问我的数据库(arduDB),但可以使用 MYSQLI 而不使用数据库名称“arduDB”。
我从 phpmyadmin 中删除了 '' (Any) 用户,但仍然无法使用 PDO 访问。整天搜索和阅读有关此问题的信息,但找不到发生这种情况的原因。我也用密码创建了另一个用户,但也无法使用 PDO 访问 DB。
似乎phpmyadmin无法关联数据库的权限,
编辑了 这个'add.php',不使用'arduDB'名称通过MYSQLI进行访问:
<?php
$servername = "localhost";
$username = "Atmega";
// Create connection
$conn = new mysqli($servername, $username);
// Check connection
if ($conn->connect_error) {
die("Failed: " . $conn->connect_error);
}
echo "Connected!!!";
?>
在网络浏览器中显示“已连接”。但是,如果我尝试使用 arduDB 参数,则会出现同样的错误。
但是当我使用 PDO 时,表示arduDB数据库,我无法访问我的数据库。
<?php
$servername = "localhost";
$username = "Atmega";
try {
$conn = new PDO("mysql:host=$servername;dbname=arduDB", $username);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected!!!";
}
catch(PDOException $e)
{
echo "Failed: " . $e->getMessage();
}
?>
SQLSTATE[HY000] [1044] 用户 ''@'localhost' 对数据库 'ardudb' 的访问被拒绝 或 SQLSTATE[HY000] [1044] 用户'Atmega'@'localhost' 对数据库'ardudb' 的访问被拒绝
请问,我需要在我的代码中配置或使用什么才能在我的项目中使用 PDO 授予对特定数据库的访问权限?