我们如何授予用户在 phpmyadmin(cPanel) 中创建数据库的权限?
Posted
技术标签:
【中文标题】我们如何授予用户在 phpmyadmin(cPanel) 中创建数据库的权限?【英文标题】:How we can give permission to a user to create database in phpmyadmin(cPanel)? 【发布时间】:2012-08-31 01:43:19 【问题描述】:我有一个数据库和一个通过 cpanel 创建的用户(我已将该用户添加到该数据库,并且我能够使用该用户及其密码访问该数据库。我已通过 cPanel 授予该用户所有权限(通过单击 cpanel 中“当前数据库”表中的用户名并单击所有权限复选框)。
在我的应用程序(使用 php-Codeigniter 框架创建)中,我想根据用户的要求在该数据库中创建新的数据库和表。为此,我使用 Codeigniter dbforge 类来创建数据库和其中的表。
$this->load->dbforge();
if ($this->dbforge->create_database($database_name))
$config['hostname'] = "localhost";
$config['username'] = "user_name";
$config['password'] = "users_password";
$config['database'] = $database_name;
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = TRUE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
$config['swap_pre'] = '';
$config['autoinit'] = TRUE;
$config['stricton'] = FALSE;
$db_new=$this->load->database($config,TRUE);
$this->db=$db_new;
$this->load->dbforge();
$fields=array(
'id'=>array('type'=>'INT','auto_increment'=>TRUE,'constraint'=>'5'),
'first_name'=>array('type'=>'VARCHAR','constraint'=>'60'),
'last_name'=>array('type'=>'VARCHAR','constraint'=>'60','null' => TRUE),
);
$this->dbforge->add_field($fields);
$this->dbforge->add_key('id',TRUE);
$this->dbforge->create_table('clients');
在上面的代码中,我首先创建一个数据库,然后将该数据库加载为当前数据库。此代码在本地主机 WAMP 服务器中完美运行,但是当我将其上传到服务器然后尝试创建数据库时,它会出现以下错误
Error No 1044: Access denied for user 'username'@'localhost' to database 'database_name'
导致thr错误的代码行是
if ($this->dbforge->create_database($database_name))
*在上述代码中显示的数据库配置设置中,“用户名”和“密码”作为已经存在的数据库(通过 cPanel 创建)的用户名和密码给出 。那是问题吗...? * 。
我们正在尝试创建新数据库的当前用户拥有所有可用的权限。但在那个 'CREATE DATABASE' 特权不存在。
对于数据库命名,我在数据库名称中使用了“prefix_”(CPanel 数据库命名格式)
如何使用 dbforge 类创建数据库并使用现有用户访问该数据库...?
【问题讨论】:
我认为您将无法使用该用户创建数据库。您可以通过 CPanel 创建一个新数据库,但我不确定您是否能够创建一个可以访问这两个数据库的用户。也许您可以联系托管服务提供商? @Lex-'创建一个可以访问两个数据库的用户'- 意味着我必须通过 cPanel 创建数据库并通过 cPanel 将现有用户添加到新创建的数据库中......? . 【参考方案1】:先尝试创建超级用户
mysql > GRANT ALL PRIVILEGES on databasename.* TO "username"@"localhost" IDENTIFIED BY "password";
【讨论】:
以上是关于我们如何授予用户在 phpmyadmin(cPanel) 中创建数据库的权限?的主要内容,如果未能解决你的问题,请参考以下文章
mysql-user 创建/授予但没有通过 phpmyadmin 连接