Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用用户名、密码和所有权限从PHP创建MySQL数据库_Php_Mysql - Fatal编程技术网

使用用户名、密码和所有权限从PHP创建MySQL数据库

使用用户名、密码和所有权限从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数据库的php文件

我需要创建一个条件,如果找不到数据库,它将创建它

我研究并发现了如何使用PHP创建数据库。但是,我需要使用以下标准创建一个:

数据库名称、数据库用户、密码和授予的所有权限


有什么方法可以实现这一点吗?

请参阅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)。为什么会这样?有什么想法吗?看起来你的密码不匹配或者用户不存在用户不存在,但是我想从代码中从头开始创建一切,这样客户端就不必创建数据库,也不必创建用户。仅仅从代码中就可以做到这一点吗?好的,我所做的是创建一个公共用户/密码,如果找不到这个特定应用程序的数据库,它首先连接公共用户/密码,然后创建数据库。