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

时间:2010-11-27 17:08:24

标签: php mysql

我有一个连接到mysql数据库的php文件。

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

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

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

我有办法实现这个吗?

5 个答案:

答案 0 :(得分:2)

你可以这样做

$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 

}

答案 1 :(得分:1)

这将是一个鸡和蛋的问题。要通过PHP连接MySQL,您需要有效的用户名/密码。但是您的程序可能连接到没有配置该用户/密码的数据库,那么它如何能够连接以创建用户/密码/数据库呢?

答案 2 :(得分:0)

请参阅CREATE USERGRANT的MySQL文档。

答案 3 :(得分:0)

$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{
}

答案 4 :(得分:-1)

这是我写的一个cli脚本(修改了其他copy-pasta),它创建了一个数据库,用户名和密码(都相同),并且可以在php 7.4中工作

<?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";