一个数据库多个用户登陆,然后不同用户访问的数据库又不同,很多人都不知道如何操作,网上也有一堆的过时的教程,根本没办法满足需求,作者写了个方法,可以实现创建用户名=数据库名(长度16)的权限的划分方法:
使用该方法前请确保启用了PDO_MYSQL
方法中的5个参数分别为:
$host=主机地址;
$user=用户,一般都是root(必须要最高权限的用户才能创建);
$password=用户密码,即root的密码;
$table=需要创建的数据库名称同时也是对应的用户名,长度16
$userpassword=创建新的MYSQL的用户的密码参数
function mysql_user_shell($host,$user,$password,$table,$userpassword)
{
$pdo=new PDO (“mysql:host=$host;charset=utf8”,$user,$password); //生成配置连接
$table=substr($table, 0, 16);//table重新赋值,提取前16位置
if($pdo->query(“create database $table”)) //如果创建数据库成功
{
echo “数据库:”.$table.”创建成功”;
}
else
{
echo “数据库已经存在或未启动参数错误.”;
}
$pdo=new PDO(“mysql:host=$host;dbname=$table;charset=utf8″,$user,$password); //重新创建PDO的连接并且连接对应的数据库
$sql=”grant select,insert,update,delete,create,drop on $table.* to $table@localhost identified by ‘$userpassword'”;
$pdo->exec($sql); //执行用户的创建
$sql=”REVOKE ALL PRIVILEGES ON `$table`.* FROM ‘$table’@’localhost'”;
$pdo->exec($sql);
$sql=”GRANT ALL PRIVILEGES ON `$table`.* TO ‘$table’@’localhost’ WITH GRANT OPTION”;
$pdo->exec($sql);
}
关于作者