Sanjay
Sanjay

Reputation: 51

How we can give permission to a user to create database in phpmyadmin(cPanel)?

I have a database and a user which is created through cpanel(i have added that user to that database and i am able to access that database using that user and its password. i have given all privileges to that user through cPanel(by clicking on the username in 'current database' table in cpanel and clicking on all privileges check box ).

In my application(which is created using PHP- Codeigniter framework) i want to create new database and tables in that database as per users requirement. For that i am using Codeigniter dbforge class for creating database and the tables in that.

$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');

        }

In the above code i am creating a database first and then loading that database as the current database . This code works perfectly in local host WAMP server but when i uploaded it to the server and then tried to create the database it gives the following Error

Error No 1044: Access denied for user 'username'@'localhost' to database 'database_name' 

The line of code which caused thr error is

if ($this->dbforge->create_database($database_name)){

*In that database config setting shown in the above code the 'username' and 'password' is given as the username and password of the already existing database(which is created through cPanel) . Is that the problem...?* .

the current user using which we are trying to create new database is having all the avilable privileges. but in that 'CREATE DATABASE ' privilege is not there.

For database naming I have used the ' prefix_ ' in the database name(CPanel database naming format)

How can i create the database using dbforge class and access to that database using a existing user ...?

Upvotes: 0

Views: 4583

Answers (1)

Philip
Philip

Reputation: 4592

Try Create a Super User first

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

Upvotes: 1

Related Questions