我有一个连接到mysql数据库的php文件。
我需要创建一个条件,如果找不到数据库,它将创建它。
我研究过,我发现了如何使用PHP创建数据库。但是,我需要使用以下标准创建一个:
数据库名称,数据库用户,密码和授予的所有权限
我有办法实现这个吗?
答案 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 USER和GRANT的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";