我们如何授予用户在phpmyadmin(cPanel)中创建数据库的权限?

时间:2012-09-06 09:09:58

标签: codeigniter phpmyadmin cpanel mysql-error-1044

我有一个数据库和一个通过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)){

* 在上面代码中显示的数据库配置设置中,'username'和'password'作为现有数据库的用户名和密码(通过cPanel创建) 。这是问题......? *。

我们尝试创建新数据库的当前用户拥有所有可用的权限。但是'CREATE DATABASE'特权不存在。

对于数据库命名,我在数据库名称(CPanel数据库命名格式)中使用了'前缀_ '

如何使用dbforge类创建数据库并使用现有用户访问该数据库......?

1 个答案:

答案 0 :(得分:1)

首先尝试创建超级用户

mysql > GRANT ALL PRIVILEGES on databasename.* TO "username"@"localhost" IDENTIFIED BY "password";