I'm trying to get MariaDb to
a) create a database
b) create a user for the database
c) create a table for the database
d) insert data into the new table
However, the code doesn't
a) create a table
b) log in as the new user and insert the data into the table
The PHP code:
$MariaDb_User_Username = "username_a";
$MariaDb_User_Password = "password_a";
$MariaDb_User_Database = "database_a";
$Admin_Username = "Admin";
$Admin_Password = "asd123";
try{
$Dbh1 = new PDO("mysql:host=127.0.0.1:3307", $Admin_Username, $Admin_Password);
$Dbh1->exec("CREATE DATABASE `{$MariaDb_User_Database}`;"); //'
echo "A complete<br>";
}
catch (PDOException $e)
{
echo 'A Error:'.$e->getCode().':<br>'.$e->getMessage().'<br>'; //die($e->getMessage()); //'.$e->errorInfo().'<br>
}
try{
$Dbh2 = new PDO("mysql:host=127.0.0.1:3307", $Admin_Username, $Admin_Password);
$Dbh2->exec("CREATE USER IF NOT EXISTS `{$MariaDb_User_Username}`@`127.0.0.1:3307` IDENTIFIED BY `{$MariaDb_User_Password}`;
GRANT SELECT, INSERT, UPDATE, DELETE ON `{$MariaDb_User_Database}`.* TO `{$MariaDb_User_Username}`@`127.0.0.1:3307`;
FLUSH PRIVILEGES;");
echo "B complete<br>";
}
catch (PDOException $e)
{
echo 'B Error:'.$e->getCode().':<br>'.$e->getMessage().'<br>'; //die($e->getMessage()); //'.$e->errorInfo().'<br>
}
try{
$Dbh3 = new PDO("mysql:host=127.0.0.1:3307", $Admin_Username, $Admin_Password);
$Dbh3->exec("CREATE TABLE Tablename(
rowid INT( 255 ) AUTO_INCREMENT PRIMARY KEY,
fname VARCHAR( 255 ) NOT NULL,
sname VARCHAR( 255 ) NOT NULL,
age INT( 3 )");
echo "C complete<br>";
}
catch (PDOException $e)
{
echo 'C Error:'.$e->getCode().':<br>'.$e->getMessage().'<br>'; //die($e->getMessage()); //'.$e->errorInfo().'<br>
}
try{
$Dbh4 = new PDO("mysql:host=127.0.0.1:3307;dbname=$MariaDb_User_Database", $MariaDb_User_Username, $MariaDb_User_Password);
$statement = $Dbh4->prepare('INSERT INTO '.$MariaDb_User_Database.' (name, lastname, age)
VALUES (:fname, :sname, :age)');
$statement->execute([
'fname' => 'Bob',
'sname' => 'Desaunois',
'age' => '18',
]);
echo "D complete<br>";
}
catch (PDOException $e)
{
echo 'D Error:'.$e->getCode().':<br>'.$e->getMessage().'<br>'; //die($e->getMessage()); //'.$e->errorInfo().'<br>
}
Also, the user is created when checking in PhpMyAdmin->MariaDb, it shows the following credentials:
USERNAME: username_a
HOSTNAME: 127.0.0.1:3307
TYPE: wildcard:database_a
PRIVILEGES: SELECT,INSERT,UPDATE,DELETE
GRANT: No
The only response I'm getting is:
A complete
B complete
C complete
D Error:1045:
SQLSTATE[HY000] [1045] Access denied for user 'username_a'@'localhost' (using password: YES)
which is weird because C was never completed as well as D.
Thanks.