使用用户名、密码和所有权限从PHP创建MySQL数据库
我有一个连接到mysql数据库的php文件 我需要创建一个条件,如果找不到数据库,它将创建它 我研究并发现了如何使用PHP创建数据库。但是,我需要使用以下标准创建一个: 数据库名称、数据库用户、密码和授予的所有权限使用用户名、密码和所有权限从PHP创建MySQL数据库,php,mysql,Php,Mysql,我有一个连接到mysql数据库的php文件 我需要创建一个条件,如果找不到数据库,它将创建它 我研究并发现了如何使用PHP创建数据库。但是,我需要使用以下标准创建一个: 数据库名称、数据库用户、密码和授予的所有权限 有什么方法可以实现这一点吗?请参阅MySQL文档了解和。您可以这样做 $connection=mysql_connect('server','username',password); $db_result=mysql_select_db('database'); if(!$db_
有什么方法可以实现这一点吗?请参阅MySQL文档了解和。您可以这样做
$connection=mysql_connect('server','username',password);
$db_result=mysql_select_db('database');
if(!$db_result){
mysql_query("CREATE USER 'stackoverflow'@'localhost' IDENTIFIED BY 'mypass';",$connection); //user
mysql_query("GRANT ALL ON db1.* TO 'stackoverflow'@'localhost');"
mysql_query("CREATE DATABASE my_db",$connection); //create database
}else{
//Database is available
}
这会有点鸡和蛋的问题。要通过PHP连接到MySQL,需要有效的用户名/密码。但是,您的程序可能连接到一个没有配置该用户/密码的数据库,那么它将如何连接以首先创建用户/密码/数据库呢?下面是我编写的一个cli脚本(修改了其他副本),它创建了一个数据库、用户名和密码(都一样)它在PHP7.4中工作
$connection=mysql_connect('server','username',password);
$db_result=mysql_select_db('database');
if(!$db_result){
mysql_query("CREATE USER 'stackoverflow'@'localhost' IDENTIFIED BY 'mypass';",$connection); //user
mysql_query("GRANT ALL ON db1.* TO 'stackoverflow'@'localhost');"
mysql_query("CREATE DATABASE my_db",$connection); //create database
}else{
}
<?php
$usage =
"dbusercreate - quickly create a db with user and password with privileges\n".
'php '.$argv[0].' <db-user-pass> <root-password>'."\n";
if (empty($argv[1])){
die($usage);
}
if (empty($argv[2])){
die($usage);
}
$dbuserpass = $argv[1];
$rootpass = $argv[2];
$con=mysqli_connect("localhost","root", $rootpass);
// check con...
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error()."\n";
exit(1);
}
// Create database
$sql="CREATE DATABASE $dbuserpass";
echo $sql."\n";
if (mysqli_query($con,$sql) == false){
echo "Error creating database: " . mysqli_error($con)."\n";
exit(1);
}
// Create user
$sql='GRANT usage on *.* to ' . $dbuserpass . '@localhost identified by ' . "'" . "$dbuserpass" . "'";
echo "$sql"."\n";
if (mysqli_query($con,$sql) == false){
echo "Error creating database user: " . mysqli_error($con)."\n";
exit(1);
}
// Create user permissions
$sql="GRANT all privileges on $dbuserpass.* to $dbuserpass@localhost";
echo "$sql"."\n";
if (mysqli_query($con,$sql) == false){
echo "Error creating database user: " . mysqli_error($con)."\n";
exit(1);
}
echo "Database Name: $dbuserpass"."\n";
echo "Database Username: $dbuserpass"."\n";
echo "Database Password: $dbuserpass"."\n";
echo "Database Host: localhost"."\n";
OP明白这一点。他不知道如何创建数据库权限和连接属性。当我运行此代码时,出现以下错误消息:无法连接:拒绝用户“dbname”@“localhost”的访问(使用密码:YES)。为什么会这样?有什么想法吗?看起来你的密码不匹配或者用户不存在用户不存在,但是我想从代码中从头开始创建一切,这样客户端就不必创建数据库,也不必创建用户。仅仅从代码中就可以做到这一点吗?好的,我所做的是创建一个公共用户/密码,如果找不到这个特定应用程序的数据库,它首先连接公共用户/密码,然后创建数据库。